gpt4 book ai didi

c# - AppDomain.UnhandledException 自动重新抛出已处理的异常

转载 作者:行者123 更新时间:2023-11-30 22:21:01 27 4
gpt4 key购买 nike

我试图在我的应用程序中捕获所有未处理的异常,以便有条件地处理那些可以在不终止应用程序的情况下发生的异常,但我无法解决一个非常基本的问题:它不会停止异常。代码中某处抛出未处理的异常,它出现在这里,显示消息框,然后应用程序显示相同的异常未处理(如果在 Debug模式下)或只是崩溃(如果运行时没有调试)。这意味着即使调用了处理程序,异常仍未处理。

App() {
AppDomain.CurrentDomain.UnhandledException += (s, a) => {
var ex = (Exception)a.ExceptionObject;
MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
};
}

这来自一个新的空白测试项目,除了这段代码和一个点击时会抛出异常的按钮外,什么都没有。

最佳答案

您忘记终止您的程序。所以它继续进行正常的未处理异常处理。添加这一行:

  Environment.Exit(System.Runtime.InteropServices.Marshal.GetHRForException(ex));

稍微费力的 Marshal 调用可确保为您的进程获取 Process.ExitCode 的另一个进程获得合理的错误指示。它是可选的,只是推荐。

关于c# - AppDomain.UnhandledException 自动重新抛出已处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665207/

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