【发布时间】:2011-02-12 19:46:38
【问题描述】:
考虑以下简单的应用程序:由 VS 中的“新 C# windows 应用程序”序列创建的 windows 窗体,并以以下方式修改:
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 包含以下修改:
private void Form1_Load(object sender, EventArgs e)
{
throw new Exception("Error");
}
如果我在 IDE 中按 F5,那么,正如我所料,我会看到一个消息框,指出异常被捕获并且应用程序退出。
如果我转到 Debug(或 Release)/bin 并启动可执行文件,我会看到标准的“未处理异常”窗口,这意味着我的异常处理程序不起作用。
显然,这与从调用 Application.Run 的不同线程抛出异常有关。但问题仍然存在 - 为什么行为会因应用程序是从 IDE 运行还是从命令行运行而有所不同? 确保应用程序中没有未处理的异常的最佳做法是什么?
【问题讨论】:
-
@Corvin:如果您觉得您的问题有解决方案,请检查已接受的答案。
标签: c# .net windows visual-studio winforms