- PR -

【C#.NET】実行形態によって例外発生後の挙動は変わりますか?

1
投稿者投稿内容
あき
ベテラン
会議室デビュー日: 2003/07/23
投稿数: 72
投稿日時: 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
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-02-21 21:59
ここが参考になるかと
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10474&forum=7
あき
ベテラン
会議室デビュー日: 2003/07/23
投稿数: 72
投稿日時: 2005-02-22 12:40
ご返信ありがとうございます。

ThreadAbortException なんてものがあるんですねぇ。。。
.NET Framework SDKドキュメントを見てみると「ThreadAbortException は、キャッチできても、catch ブロックの末尾でもう一度自動的に発生する特殊な例外」となってました。

アドバイスどうもありがとうございました(^^ゞ
1

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