我正在使用Visual Studio 2012,C#,.NET 4.5创建Windows Forms
应用程序; Windows 7。
我想用自己的错误处理程序处理任何未处理的异常。我写了一些代码,如下图所示。我甚至尝试了两种不同的错误处理方式。
现在,当我在Visual Studio(2012)中运行此程序时,这非常正常!
但是当我从资源管理器启动程序时,我的错误处理程序永远不会被调用;相反,总会从.NET Framework弹出标准错误处理程序。
那么我做错了什么?
static void Main()
{
try
{
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(HandleUnhandledException);
Application.Run(new frmMainFrame());
}
catch (Exception ex)
{
// Here is my error handler ....
}
}
static void HandleUnhandledException(object sender, UnhandledExceptionEventArgs args)
{
Exception ex = (Exception) args.ExceptionObject;
// Here is my error handler ....
}
答案 0 :(得分:1)
连接Application.ThreadException。
或者将Application.SetUnhandledExceptionMode设置为UnhandledExceptionMode.ThrowException以启动您的appdomain处理程序。
答案 1 :(得分:0)
首先,我会使用Debugger.Break()
方法将您的程序附加到有问题的代码部分。可能只是检查currentDomain是否为空。假设您没有引发强制CLI停止的异常。