考慮以下簡單的應用程序:在主捕捉異常()方法
public static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
try
{
Application.Run(new Form1());
}
catch (Exception ex)
{
MessageBox.Show("An unexpected exception was caught.");
}
}
Form1.cs中包含:通過在VS一個「新的C#視窗應用」序列是在一個下面的方式修改創建的窗口形式以下修改:
private void Form1_Load(object sender, EventArgs e)
{
throw new Exception("Error");
}
如果我按F5在IDE中,然後,如我所料,我看到一個消息框說異常被捕獲,並且應用程序退出。
如果我去調試(或釋放)/斌並啓動可執行文件,我看到標準的「未處理的異常」窗口,這意味着我的異常處理程序不起作用。
很明顯,這與異常從Application.Run被調用的另一個線程拋出有關。但問題依然存在 - 爲什麼行爲會因應用程序是從IDE還是從命令行運行而有所不同? 確保應用程序中沒有未處理的例外的最佳做法是什麼?
@Corvin:如果你覺得你的問題得到了解決方案,請檢查一個被接受的答案。 – 2010-04-28 06:55:11