0

すべてのブロックに対して try{} catch{} を記述するのではなく、すべてのエラーを 1 か所で処理することは可能ですか。

catch (Exception ex)
{
    logger.Error(ex.Message);
    ShowErrorMessage(ex.Message);
}
4

2 に答える 2

4

例外の処理方法がわからない場合を除き、通常はできるだけ早く例外を処理する必要があります。キャッチされない例外については、AppDomain.UnhandledExceptionおよびApplication.ThreadExceptionイベントを処理できます。コードのUnhandledExceptionどこかで例外がスローされたが、それを処理していない場合、イベントが発生します。MSDN から:

[UnhandledException] は、キャッチされていない例外を通知します。これにより、アプリケーションは、システムのデフォルト ハンドラがユーザーに例外を報告してアプリケーションを終了する前に、例外に関する情報をログに記録できます。アプリケーションの状態に関する十分な情報が利用可能な場合は、後で復元するためにプログラム データを保存するなど、他のアクションを実行できます。例外が処理されない場合、プログラム データが破損する可能性があるため、注意が必要です。

于 2013-09-22T22:46:26.277 に答える
0

はい。キャッチされていない例外を登録する必要があります。これは、プロジェクト設定の [アプリケーション イベントの表示] で実行できます。これは、MyApplication_UnhandledException と呼ばれます。

于 2013-09-22T22:43:28.467 に答える