我在我的catch应用程序中实现了以下全局异常WinForms:
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的形式运行它,或者如果我构建了一个发布项目,我将得到以下窗口,而不是我上面编码的窗口:

知道如何让我的全局异常处理程序来代替处理吗?
发布于 2013-10-21 01:06:48
您应该挂起像AppDomain.UnhandledException这样的事件。
这些事件是在发布模式中看到的全局错误处理程序之前引发的。这允许您在救援前记录错误。以更好的方式。
还会引发其他事件。例如,Application.ThreadException。阅读这些文档将使您更好地了解您的具体需求。
我必须指出,你看到的错误是一个NullReferenceException..理想情况下,在您的代码中可以很好地处理。不过,将这些事件挂钩并记录异常仍然是个好主意。
https://stackoverflow.com/questions/19484774
复制相似问题