gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:24:37 26 4
gpt4 key购买 nike

我试图让我的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com