异常处理程序仅在从Visual Studio中运行时才起作用

时间:2013-08-04 12:48:14

标签: c# .net visual-studio

我正在使用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 ....
}

2 个答案:

答案 0 :(得分:1)

连接Application.ThreadException

或者将Application.SetUnhandledExceptionMode设置为UnhandledExceptionMode.ThrowException以启动您的appdomain处理程序。

答案 1 :(得分:0)

首先,我会使用Debugger.Break()方法将您的程序附加到有问题的代码部分。可能只是检查currentDomain是否为空。假设您没有引发强制CLI停止的异常。