- PR -

Windowsフォームにおける例外キャッチについて

1
投稿者投稿内容
あひる隊長
常連さん
会議室デビュー日: 2003/07/23
投稿数: 36
投稿日時: 2004-12-24 19:22
Webフォームでは例外キャッチに漏れた例外を最終的Global.asax内のApplication_OnErrorイベントハンドラにて一括してキャッチすることができますが、これと同様にWindowsフォームにて万が一例外キャッチをし損ねた場合に、例外を一元的に処理したい場合どうすれば良いのでしょうか?

最初はエントリポイント内にて
コード:
static void Main() 
{
	try
	{
		Application.Run(new Form1());
	}
	catch(Exception ex)
	{
		MessageBox.Show(ex.Message);
	}
}



のように記述しておりましたが、これだとVisualStudioから起動した場合は例外をキャッチできますが、exeを直接実行した場合は
「アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました〜」
というアサートのダイアログのようなものが表示されエントリポイントで例外をキャッチできませんでした・・

お手数ですが、宜しくお願いいたします。

VS2003 + Win2k Proです。
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2004-12-25 06:43
Application.ThreadException イベントですかね。
nodera
大ベテラン
会議室デビュー日: 2003/09/08
投稿数: 200
投稿日時: 2004-12-27 09:49
こんにちは。追加で。

ThreadExceptionはCLS準拠の例外しかキャッチできないので、AppDomainのUnhandledExceptionと「共に」利用したほうがより確実です。
あひる隊長
常連さん
会議室デビュー日: 2003/07/23
投稿数: 36
投稿日時: 2004-12-27 18:11
にしざきさん、noderaさん

とりあえず先に教えて頂いたThreadExceptionイベントにて希望する処理を実装
することができました。
これからUnhandledExceptionについても精査してみます。

それからMSDNで例外について調べてから、IDEからの起動と、exeからの起動によって
未処理例外に対する挙動になぜ差がでるかのかも分かってきました。

本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)