2

有什么方法可以完全杀死当前进程并跳过 Windows 错误报告?甚至是一种以更友好的方式处理全局错误以便异常不会传递给操作系统的方法?

我在本地处理尽可能多的错误,但也有一个全局错误处理程序,它将向我发送一封包含错误详细信息的电子邮件。这是我自定义的错误报告。

我有一个为我的公司构建的 WPF C# 应用程序。它只被少数人使用。

我正在尝试找到一种方法来发出更友好的消息,说明已引发错误并且应用程序必须关闭,发送电子邮件,然后关闭应用程序。但无论我做什么,应用程序仍然冻结并尝试向 Microsoft 报告错误。

4

2 回答 2

0

您必须在ApplicationAppDomain级别添加全局异常处理程序。

应用程序级处理程序:

Application.Current.DispatcherUnhandledException += OnDispatcherUnhandledException;

void OnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs eventArgs)
{
        // exception handling goes here
}

AppDomain 级处理程序:

AppDomain.CurrentDomain.UnhandledException += OnAppDomainUnhandledException;

void OnAppDomainUnhandledException(object sender, UnhandledExceptionEventArgs eventArgs)
{

}

但是,很少有无法处理的异常类型(如 StackOverflowException)。

于 2013-06-26T15:12:32.867 回答
0

有时你可以,有时你不能。

首先,您必须检查是什么异常导致您的应用程序从事件查看器中崩溃,并查看您是否可以处理此类异常。App.DispatcherUnhandledException 和 AppDomain.UnhandledException 事件处理程序可以处理许多异常。

但是,某些异常不能被用户捕获,例如 ExecutionEngineException。在这些情况下,您无法防止崩溃并优雅地处理它。

于 2013-06-26T15:03:51.340 回答