次のようにIは、未処理の例外が捕捉され、メッセージボックスを表示ThreadExceptionHandler有する試験リサイズアプリを持っている:ThreadExceptionHandlerはMainFrmコンストラクタで例外をキャッチしない
[STAThread]
static void Main()
{
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
MessageBox.Show("error caught");
}
Iは、フォームのctorの誤差を強制する場合次のように1(例えばDIVIDEBYZERO):
public Form1()
{
InitializeComponent();
int i = 0;
int x = 5/i;
}
と(Windows 7の)のVisual Studioの外部でアプリケーションを実行し、ゼロ例外によって除算をが取り扱われていない - 私は助けにならない「WindowsFormApplicaを取得します1の動作が停止しました...」というメッセージが表示されます。
ただし、、dividebyzero例外をForm1_Loadイベントに移動して再実行すると、例外が適切に処理されます。
これがなぜこのように説明できますか?このテストプログラムを実行したのは、私が追跡しようとしている別のエンタープライズアプリケーションで同様の未処理例外の問題が発生しているためです。
+1 - わかりやすく説明が... –