我有一个用/ clr编译的MFC应用程序,我正在尝试为其他未捕获的托管异常实现最终处理程序.对于本机异常,重写CWinApp::ProcessWndProcException
工作.
Jeff的CodeProject文章中提出了两个事件,Application.ThreadException
并AppDomain.CurrentDomain.UnhandledException
没有提出.
任何人都可以建议一种方法为混合可执行文件提供最终的托管异常处理程序?
更新:
似乎这些异常处理程序仅在下游Application.Run
或类似地触发(存在工作线程风格,无法记住名称.)如果要真正全局捕获托管异常,则需要安装SEH过滤器.你不会得到一个System.Exception
,如果你想要一个callstack,你将不得不推出自己的助行器.
在关于该主题的MSDN论坛问题中,建议覆盖a中主MFC线程的足够低级别的点try ... catch (Exception^)
.例如,CWinApp::Run
.这可能是一个很好的解决方案,但我没有考虑任何性能或稳定性的影响.在保释之前,您将有机会使用调用堆栈进行记录,并且可以避免默认的Windows unahndled异常行为.