dotNetで例外がスローされ、キャッチされた場合、どのファイルのどの行が例外をスローしたかをどのように把握できますか?比較的単純ですが、私はそれを理解することはできません...例外をスローしたコード行の特定
答えて
利用できるデバッグシンボルがある場合のみ行うことができます。
catch(Exception ex) {
// check the ex.StackTrace property
}
あなたはVSでこのような状況をデバッグしたい場合は、より良いだけでExceptions
Debug
メニューにあるダイアログCommon Language Runtime Exceptions
ためThrown
チェックボックスをチェックしたいです。デバッガは、ブロックがtry
のブロックであっても、例外がスローされるとすぐに中断します。 FirstChanceExceptionと呼ばれるいただきました!あなたが持っている.NETで、
try
{
...
...
}
catch(...)
{
StackFrame sf = new StackFrame(true);
int lineNumber = sf.GetFileLineNumber();
int colNumber = sf.GetFileColumnNumber();
string fileName = sf.GetFileName();
string methodName = sf.GetMethod().Name;
}
あなたがStackFrame Classを使用することができます。これらは基本的に例外が処理される前にスローされます。あなたがここで提示している問題を見る方法は2つあります。 1つはデバッグ角度からのものです。デバッグの場合は、デバッグ/例外ウィンドウからスローされた例外をキャッチするようにデバッガを設定することができます。これは、対話的な文脈ではより簡単です。あなたは非対話コンテキスト内からこの情報を記録する必要がある場合、私はCMSが話しているものに似た何かをするだろう...
try
{
...
}
catch(Exception ex)
{
System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(ex);
System.Diagnostics.StackFrame firstFrame = stackTrace.GetFrame[0];
Console.WriteLine(firstFrame.GetFileLineNumber);
...
}
ここでの唯一の違いは、その後、我々は全体のスタックトレースを取得するということです例外が最初にスローされた最初のフレームに移動します。
まあ:
フレーム0はフレームの現在のメソッドではなく、エラーの発生元ではありませんか? –
個人的には、私は例外のToString()戻り値を記録します。スタックトレース全体が含まれます。それはコードの1行です...死んだ単純です。
- 1. 特定の例外をスローしないデリゲートのNUnit制約
- 2. DateTime.Parseは常に特定のカルチャで例外をスローします
- 3. 特定の例外がキュウリにスローされると主張し
- 4. AssociatedObject.Contentが特定のスコープの後で例外をスローする
- 5. Pythonコードのスロー例外が、それ
- 6. 例外のスローまたは再スロー?
- 7. エンティティフレームワーク変換コードの実行中に例外がスローされました
- 8. プロパティ 'Prism.Regions.RegionManager.RegionName'の設定が例外をスローしました
- 9. SimpleXmlElementが例外をスローしました
- 10. 特定の例外
- 11. Servlet.service()のサーブレット[...]がパス[/ ...]のコンテキストでスロー例外[サーブレットの実行で例外がスローされました]
- 12. 例外をチェックした後にプログラムが例外をスローする
- 13. Netty例外処理 - ハンドラが例外をスローした後、何を?
- 14. javax.servlet.ServletException:フィルタ実行が例外をスローしました
- 15. 例外をスローして特定の例外を投げることの違いは、NullPointerExceptionなど
- 16. スロー例外()またはaddGlobalError()
- 17. 例外がスローされ、さらにコードが実行される
- 18. SQL例外を生成しているコード行を特定する
- 19. Tkinter.StringVar()が例外をスローし
- 20. C#.NET 2の例外:外部コンポーネントが例外をスローしました
- 21. parseObject.saveInBackground()スロー例外
- 22. スロー例外
- 23. eglGetDisplay()スロー例外
- 24. Androidのスロー例外
- 25. ライブラリのスロー例外
- 26. C++例外のスロー
- 27. 例外がスローされた後に実行を続行する
- 28. なぜこのコードが例外をスローしますか?
- 29. このコードはなぜ例外をスローしますか?
- 30. 例外から例外をスローする
これは正解です。 – Timwi