考虑以下简单的应用程序:在主捕捉异常()方法
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