1
現在のスレッドにあるの中にあるコントロールまたはフォームの内部からスローされた例外に対しては、 "catch-all"のようなものを持っていますが、スレッド全体のApplication.ThreadException
を使用しないでください。Control/Formからすべての例外をキャッチする方法はありますか?
なぜですか?私は例外処理をモジュラーにしておきたいからです。
問題を引き起こす可能性のあるコードはすべて、現在のスレッド内で実行されているフォーム(DummyForm
)内で実行されています。そのフォームを例外の原因として識別するその他の例外(DummyFormException
)でそれらをすべてラップすることができます。その例外がApplication.ThreadExceptionになると、そのクリーンアップ閉鎖にはDummyForm
が含まれます。私はそれらを見るように
選択肢は、以下のとおりです。
#ラップDummyFormException
とDummyForm
内のすべての単一スローされた例外。将来のプログラマは、例外を投げたそれぞれのラップを覚えておく必要があるので、これはあまり好きではありません。 #DummyForm
を独自のスレッドで実行し、Application.ThreadException
を使用してそれらを捕捉し、そのコード内のスレッドを識別します。どこから来たのか分かると、DummyForm
を閉じてスレッドを終了することができます。
マルチスレッドにすることなくこれを行う方法はありますか?私はそれをしたくない、それはエラー処理のためだけに無駄に見える。それとも私はこれについて間違っているのだろうか?