.net - .NET 4 中的新 HandleProcessCorruptedStateExceptions 属性

标签 .net exception exception-handling crash

我试图让我的 WPF 崩溃应用程序,并使用上述新的 .NET 4 属性捕获异常。

我设法通过调用 Environment.FailFast("crash"); 手动使我的应用程序崩溃.
(我还设法使用来自“How to simulate a corrupt state exception in .NET 4?”的汉斯代码使其崩溃。)

当按下按钮时,应用程序调用上面的崩溃代码。
这是我的异常处理程序:

    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);

        AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException;
        AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

        DispatcherUnhandledException += app_DispatcherUnhandledException;
    }

    [HandleProcessCorruptedStateExceptions]
     void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        //log..
    }

    [HandleProcessCorruptedStateExceptions]
     void CurrentDomain_FirstChanceException(object sender, System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs e)
    {
        //log..
    }

    [HandleProcessCorruptedStateExceptions]
     void app_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
    {
        //log..
    }
//log...上面显示的评论仅用于说明;那里有真正的日志代码。

在 Visual Studio 中运行时,会引发异常,但不会“冒泡”到那些异常处理程序块。
当作为独立运行(没有附加调试器)时,我没有得到任何日志,尽管我期望。

为什么会这样,如何让处理代码被执行?

最佳答案

该属性必须放在包含 try/catch 的方法中,而不是放在事件处理程序中。

在我对 this question 的回答中提供了一个示例

关于.net - .NET 4 中的新 HandleProcessCorruptedStateExceptions 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2955460/

相关文章:

android - 关于多个dex文件定义Lcom/google/gson/JsonSerializer

java - android - 无特定原因获取 nullpointerexception

python - 如何记录python异常?

.net - Visual Studio 2012 可以并行运行单元测试吗?

c# - 使用 like 搜索

Java套接字异常: recv failed

python - 在Python中未达到return语句后引发错误?

c++ - 如何为错误输入编写异常处理?

c# - 如何正确重试 HttpRequestMessage?

c# - 如何在没有重复记录的情况下使用 DataTable.Load(DataReader) 重新加载 DataGridView