2005年05月25日

UnhandledException

   このエントリーをはてなブックマークに追加 Clip to Evernote
Application.ThreadException イベントに例外ハンドラを登録すると、未補足例外をすべて、捕まえることができます。
つまり、すべての場所で、try-cacth を書かなくても済むということです。

using System.Threading;

private void Foo() {
Application.ThreadException +=
new ThreadExceptionEventHandler(AppThreadException);
}

private void AppThreadException(object sender,
ThreadExceptionEventArgs e) {
MessageBox.Show("例外が発生" + e.Exception.Message);
}

とすれば、補足されなかった、例外が、すべて AppThreadExceptionメソッドで処理できます。

ただ、一つ問題があります。それは、UIスレッド上の未補足例外しか対象になっていないという点です。

もし、自分で作成したスレッド上で発生した例外も補足したいのならば、Application.ThreadException は使えません。

この場合は、AppDomain.CurrentDomain.UnhandledException を使うことになります。ただ、これって、ちょっと使い方が面倒ですね。
続きは、また今度。


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/23096886