- - PR -
【C#.NET】実行形態によって例外発生後の挙動は変わりますか?
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-02-21 20:26
いつもお世話になっています。
C#.NETでソースからデバッグ実行した場合と、EXEから実行した場合で例外発生後の挙動が変わります。 ・ソースから実行した場合、キャッチで出力したメッセージ→画面はアボートしない ・EXEから実行した場合、System.Exceptionのダイアログボックス→画面はアボートする。 EXEで実行すると、キャッチした例外がダイアログボックスになってしまいます。 実験したコードは、こちら↓です。 Form1とForm2をつくり、Form1のボタン押下でForm2をShowさせます。 このとき、Form2のロードで明示的なExecptionを発生させています。 //Form1のコード(抜粋) private void button1_Click(object sender, System.EventArgs e) { Form2 f; try { f = new Form2(); f.Show(); } catch(Exception ex) { MessageBox.Show(ex.Message); } } //Form2のコード(抜粋) private void Form2_Load(object sender, System.EventArgs e) { throw new Exception("Form2_Loadで例外"); } なにかご存知でしたら、どうか教えてください。 よろしくお願いいたします。 [環境]Microsoft Windows XP、Microsoft.NET Framework v1.1.4322 |
|
投稿日時: 2005-02-21 21:59
ここが参考になるかと
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10474&forum=7 |
|
投稿日時: 2005-02-22 12:40
ご返信ありがとうございます。
ThreadAbortException なんてものがあるんですねぇ。。。 .NET Framework SDKドキュメントを見てみると「ThreadAbortException は、キャッチできても、catch ブロックの末尾でもう一度自動的に発生する特殊な例外」となってました。 アドバイスどうもありがとうございました(^^ゞ |
1