4

アプリケーションで処理できない例外が発生した場合、ユーザーにエラー メッセージを表示して終了する必要があります。問題は、オプションの [詳細]、[続行]、および [終了] を含む例外ダイアログがユーザーに表示され、ユーザーが [続行] をクリックすると、アプリケーションが望ましくない「何らかの」状態で存続することです。

最小限のコードでそれを再現するために、Windows フォーム アプリケーションを作成し、ボタンを追加し、ボタン クリック用のコードを次のように記述しました。

throw new ApplicationException("I must crash now!!!");

Debug フォルダー、Release フォルダーからコンパイル済みの exe を開始するか、別の場所にコピーされた Release フォルダーから exe を開始すると (pdb ファイルが問題を引き起こしている場合)、ボタンをクリックすると、詳細 / 続行 / が表示されます。ダイアログを終了し、続行すると言うと、アプリケーションは存続します。続行オプションが表示されないようにするにはどうすればよいですか?

私のコンピューター (Vista、Visual Studio 2008、Visual Studio 2010、VS2010 でテスト アプリケーションを作成) とユーザー コンピューター (Windows 7) でこの動作が発生します。

4

2 に答える 2

5

例外をキャッチし、回避したいダイアログ ボックスを表示するのは Windows フォームです。Application.SetUnhandledExceptionModeメソッドを使用して、これを行わないように Windows フォームを構成できます。

于 2012-05-15T14:03:55.407 に答える
3

イベントのイベント ハンドラーを作成する必要がありAppDomain.UnhandledExceptionます。ここで、ユーザーにより良いエラー メッセージを表示します。

http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx

ただし、例外はシステムが未定義の状態にあることを意味する可能性があるため、エラーダイアログでさえ表示に問題がある可能性があることに注意してください.正常にクラッシュできるようにする必要があります.

アプリケーションの開始点で:

static void Main() {
    AppDomain currentDomain = AppDomain.CurrentDomain;
    currentDomain.UnhandledException += errorHandler;
    // Then start your app!
}

static void errorHandler(object sender, UnhandledExceptionEventArgs args) {
    // Show the user some error, but be prepared for disaster...
    // Examine the args.ExceptionObject (which is an Exception)
}
于 2012-05-15T13:50:51.007 に答える