1

我正在Windows Forms使用 Visual Studio 2012、C#、.NET 4.5 创建一个应用程序;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 ....
}
4

2 回答 2

1

也连接Application.ThreadException

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

于 2013-08-04T12:54:53.650 回答
0

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

于 2013-08-04T12:55:28.247 回答