混合本机/托管可执行文件中的最终托管异常处理程序

Aid*_*yan 6 executable unhandled mixed exception

我有一个用/ clr编译的MFC应用程序,我正在尝试为其他未捕获的托管异常实现最终处理程序.对于本机异常,重写CWinApp::ProcessWndProcException工作.

Jeff的CodeProject文章中提出了两个事件,Application.ThreadExceptionAppDomain.CurrentDomain.UnhandledException没有提出.

任何人都可以建议一种方法为混合可执行文件提供最终的托管异常处理程序?


更新:

似乎这些异常处理程序仅在下游Application.Run或类似地触发(存在工作线程风格,无法记住名称.)如果要真正全局捕获托管异常,则需要安装SEH过滤器.你不会得到一个System.Exception,如果你想要一个callstack,你将不得不推出自己的助行器.

在关于该主题的MSDN论坛问题中,建议覆盖a中主MFC线程的足够低级别的点try ... catch (Exception^).例如,CWinApp::Run.这可能是一个很好的解决方案,但我没有考虑任何性能或稳定性的影响.在保释之前,您将有机会使用调用堆栈进行记录,并且可以避免默认的Windows unahndled异常行为.

use*_*116 2

浏览一下互联网,您会发现您需要安装一个过滤器,以使非托管异常通过过滤器到达您的 AppDomain。来自CLR 和未处理的异常过滤器

CLR依赖SEH未处理异常过滤机制来捕获未处理异常。