C#プログラム全体を試す/キャッチすることは可能ですか?
-
05-07-2019 - |
質問
C#プログラムは以下によって呼び出されます。
Application.Run (new formClass ());
未確認の例外をトラップするために、全体にtry / catchを配置したいと思います。このRunメソッドを囲むと、例外はキャッチされません。キャッチされない例外の後にプログラムが終了した場合にのみ、制御はここに戻ります。
try / catchを入れてプログラム全体をカバーできますか?ありがとう!
解決
Windowsフォームの未処理の例外をキャッチするには、
AppDomain.UnhandledException
および Application.ThreadException
イベント。
他のヒント
基本的に、デフォルトのCLRホスティングプロセスを使用する場合、すべての例外をキャッチすることはできません。期間。これは、 AppDomain.UnhandledException
イベントは通知のみであり、例外を処理できません(つまり、通知の処理後にアプリケーションが終了しないようにすることはできません)。
ただし、 Application.ThreadException
ハンドラー(および UnhandledExceptionMode
一般的に、すべての例外を処理しようとするのは得策ではありません。ただし、使用することができます
AppDomain.UnhandledException
を使用して、エラーをログに記録したり、重要なクリーンアップタスクを実行したりします(ファイルベースのデータベースなどをシャットダウンします)。