首页 > 解决方案 > 是否可以在 UWP 应用程序中捕获本机未处理的异常?

问题描述

我们的 UWP 应用程序主要是 C#,但有一个本机 DLL。当本机代码崩溃时,不会触发 CoreApplication.UnhandledErrorDetected(我们有一个 C# 处理程序)。我们尝试在 DLL 中调用 SetUnhandledExceptionFilter,但我们的处理程序没有被调用。

顺便说一句,CRT 处理程序确实有效(例如 _set_invalid_parameter_handler)。

https://social.msdn.microsoft.com/Forums/windowsapps/en-US/9cddf0bc-8277-4534-b2c5-a96b9012e569/uwpc-is-it-possible-to-capture-unhandled-exceptions?forum=wpdevelop建议使用 CoreApplicationExceptionHandler::OnUnhandledException。

我曾尝试将 CoreApplicationExceptionHandler::OnUnhandledException 嵌入到本机 DLL 中,但它根本没有帮助。

  1. 如果在 C# 中设置了捕获(首先),则不会调用本机处理程序。只有当它是第一个集合时才会调用它(尽管在我的测试中,处理程序会传播异常)。
  2. 处理程序不会捕获非 WinRT 代码中的本机崩溃。

那么如何捕获原生异常???

此处提供了显示问题的演示解决方案:https ://drive.google.com/file/d/1-6r-XrOe6cRhZduRNA2HnhLm7eKQlGFU/view?usp=sharing

谢谢

标签: c++exceptionuwpwindows-runtimeunhandled

解决方案


推荐阅读