すべての未処理の例外をキャッチする小さなライブラリを作成しています。これは、ユーザーに開発者に例外を送信する機会を与える小さなダイアログ(NFの通常のダイアログに似ています)を示しています。これを行うには、私はこのようなのAppDomainのUnhandledExceptionイベントを使用します。UnhandledExceptionイベントが機能しませんか?
app.UnhandledException += (object sender, UnhandledExceptionEventArgs e) =>
{
ExceptionHandler handler = new ExceptionHandler((Exception)e.ExceptionObject, ExEntry);
UnhandledExceptionListened(handler);
if (Properties.Settings.Default.ShowStandardExceptionDialog)
{
ExceptionDialog exdialog = new ExceptionDialog(handler);
exdialog.ShowDialog();
}
};
exceptionHandlerのとExEntryは私のライブラリのクラスです。しかし:例外が発生した場合、コンパイラはLambda-Expressionにジャンプし、コードの最初の行をデバッグしようとし、残りのラムダを処理せずに前に発生したエラーを表示します。 しかし、私はちょうど書く場合:
app.UnhandledException += (object sender, UnhandledExceptionEventArgs e) =>
{
ExceptionDialog exdialog = new ExceptionDialog(handler);
exdialog.ShowDialog();
};
これは完全に動作します。なぜこれがうまくいかないのか考えている人はいますか?
try catchでトップコードを折り返し、キャッチにウォッチポイントを入れます。例外がありますか、もしあればそれは何ですか? – TheKingDave
テストユニットで例外ハンドラの作成を単にテストするのはどうですか?何よりも何が起こるの? –