异常处理程序仅在从Visual Studio中运行时有效

本文关键字:运行时 有效 Studio Visual 异常处理程序 | 更新日期: 2023-09-27 18:26:32

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

异常处理程序仅在从Visual Studio中运行时有效

连接应用程序。线程异常。

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

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