私はMDI親子アプリケーションがあります。
Program.csファイルには、ThreadExceptionとUnhandledExceptionの両方のグローバル例外ハンドラがあります。MDI子フォームの "WinForm"グローバル "キャッチ例外"
これらは正常に動作しています。
グローバルレベルで処理されない例外が発生すると、アプリケーションの現在の状態がわからないため、UnhandledExceptionハンドラ内でEnvironment.Exit(1)を呼び出してアプリケーションを閉じます。
子フォームでは、「通常」次のものをイベントハンドラに追加します。
私は例外をキャッチし、閉じずに子フォームを閉じることができます(私は、彼らが継承塩基形態を持っている)すべての私の子フォームのグローバル例外ハンドラを追加する方法があるかどうかを知りたいtry
{
// Some Code
}
catch (Exception ex)
{
HandleException(ex);
MessageBox.Show("Some message");
this.Close();
}
アプリケーション全体
この方法では、開発者がイベントにtry catchブロックを追加するのを忘れてしまった場合、アプリケーション全体を爆発させることはありません。
クラッシュダンプが便利だと私は同意します。私はスタックトレース、いくつかのパフォーマンス設定などを保存するグローバル例外ロガーを持っています...レビューのためにSQLデータベースに保存されていますが、誰かがtry catchを追加するのを忘れてしまったためにアプリケーションを強制終了したくない数字のテキストボックスに文字列を入力するだけの簡単な方法です。 – goroth