2009-03-08 9 views
1

現在のスレッドにあるの中にあるコントロールまたはフォームの内部からスローされた例外に対しては、 "catch-all"のようなものを持っていますが、スレッド全体のApplication.ThreadExceptionを使用しないでください。Control/Formからすべての例外をキャッチする方法はありますか?

なぜですか?私は例外処理をモジュラーにしておきたいからです。

問題を引き起こす可能性のあるコードはすべて、現在のスレッド内で実行されているフォーム(DummyForm)内で実行されています。そのフォームを例外の原因として識別するその他の例外(DummyFormException)でそれらをすべてラップすることができます。その例外がApplication.ThreadExceptionになると、そのクリーンアップ閉鎖にはDummyFormが含まれます。私はそれらを見るように

選択肢は、以下のとおりです。

#ラップDummyFormExceptionDummyForm内のすべての単一スローされた例外。将来のプログラマは、例外を投げたそれぞれのラップを覚えておく必要があるので、これはあまり好きではありません。 #DummyFormを独自のスレッドで実行し、Application.ThreadExceptionを使用してそれらを捕捉し、そのコード内のスレッドを識別します。どこから来たのか分かると、DummyFormを閉じてスレッドを終了することができます。

マルチスレッドにすることなくこれを行う方法はありますか?私はそれをしたくない、それはエラー処理のためだけに無駄に見える。それとも私はこれについて間違っているのだろうか?

答えて

関連する問題