私は、ハンドルされていないすべての例外をキャッチする小さなライブラリを作成しています。小さなダイアログ (NF の通常のダイアログに似ています) を表示し、ユーザーに例外を開発者に送信する機会を与えます。これを行うには、AppDomain の UnhandledException-Event を次のように使用します。
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 は、私のライブラリのクラスです。しかし: 例外が発生した場合、コンパイラはラムダ式にジャンプし、コードの最初の行をデバッグしようとし、ラムダの残りの部分を処理せずに以前に発生したエラーを表示します。しかし、私が書くだけなら:
app.UnhandledException += (object sender, UnhandledExceptionEventArgs e) =>
{
ExceptionDialog exdialog = new ExceptionDialog(handler);
exdialog.ShowDialog();
};
それは完全に機能します。なぜこれがうまくいかないのか、誰にも分かりますか?