我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的形式运行它,或者如果我构建一个Release项目,则会得到以下窗口,而不是上面编码的窗口:
任何想法如何使我的全局异常处理程序代替处理?
您应该挂接一个事件,例如AppDomain.UnhandledException。
这些事件在您在发布模式下看到的全局错误处理程序之前引发。这使您可以在以更好的方式解决之前记录错误。
还引发了其他事件。例如,Application.ThreadException。阅读文档可以使您更好地了解自己的特定需求。
我必须注意,您看到的错误是NullReferenceException
..最好在您的代码中很好地处理。尽管如此,挂接这些事件并记录异常是一个好主意。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句