【发布时间】:2013-10-29 08:52:35
【问题描述】:
我在我的 WinForms 应用程序中实现了以下全局异常 catch:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyMainForm());
}
catch (Exception ex)
{
MessageBox.Show("UNHANDLED EXCEPTION: The program will be terminated. Details follow:\n\n" +
getExceptionInfoWithDebuggerOutput(ex),
"Global Exception",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
然后在代码中,引发了一个异常(就像这个 - 完全是由于我的健忘):
public partial class MyPage : UserControl
{
void func1()
{
SqlConnectionStringBuilder conStr = null;
//... later
conStr.DataSource = strServer; //<<--- Where exception is raised
}
}
现在,如果我正在调试我的项目,我会看到来自全局异常处理程序的 Global Exception 消息框。
但是,如果我没有调试我的项目并将其作为 Ctrl+F5 运行,或者如果我构建了一个发布项目,我会得到以下窗口,而不是我上面编写的那个:
知道如何让我的全局异常处理程序代替处理吗?
【问题讨论】:
-
您拥有的不是全局异常处理程序。新表单在单独的线程上运行,并且您在该线程中没有异常处理。
标签: c# .net winforms exception exception-handling