アプリを終了せずに発生する可能性のある例外を条件付きで処理するために、アプリ内の未処理の例外をすべてキャッチしようとしていますが、非常に基本的な問題を解決できません。例外が停止しません。未処理の例外がコードのどこかにスローされ、ここに表示され、メッセージボックスが表示されます。その後、アプリケーションは、同じ例外が未処理である(デバッグモードの場合)か、単にクラッシュする(デバッグなしで実行する場合)ことを示します。ハンドラーが呼び出されても、例外が未処理のままであることを意味します。
App() {
AppDomain.CurrentDomain.UnhandledException += (s, a) => {
var ex = (Exception)a.ExceptionObject;
MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
};
}
これは、このコードとクリックすると例外をスローするボタン以外は何も含まれていない、新しい空白のテストプロジェクトからのものです。