我有使用第三方库的代码。如何在C++中捕获错误__try __except不能
该库引发偶尔的访问冲突异常。一个基本的try/catch没有发现错误,程序很难崩溃。
我能够使用__try __except来代替错误,记录它,然后正常退出程序。
第三方刚刚更新了自己的图书馆,现在该是导致访问冲突错误记录的一小部分只是死在生产带有“[程序名称]已停止工作”
在Visual Studio中,当步进通过我得到“Microsoft Visual Studio C运行时库已经在[程序名称]中检测到一个致命错误。”
我已经更新了我的__except语句来捕捉所有事情(或者我相信),它仍然会发生。
原始__except:
__except (eps = GetExceptionInformation(), ((GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION)
? EXCEPTION_EXECUTE_HANDLER
: EXCEPTION_CONTINUE_SEARCH)) {
sprintf("error message");
result = 99;
}
新__except:
__except (eps = GetExceptionInformation(), ((1 == 1)
? EXCEPTION_EXECUTE_HANDLER
: EXCEPTION_CONTINUE_SEARCH)) {
sprintf("error message");
result = 99;
}
感谢您的建议,我尝试了 __except(EXCEPTION_EXECUTE_HANDLER) 结果与其他两个相同。我已经问了第三方,但是他们的时间框架对于修复来说往往太长了,这就是为什么我必须首先处理他们的访问冲突。 –
你有权访问他们的符号和源代码吗?你能够在他们的最终调试它来弄清楚异常是如何发生的吗?如果即使使用__except(EXCEPTION_EXECUTE_HANDLER),异常也不会被捕获,那么我的直觉就是库试图处理异常,所以你的代码永远不会得到它。 –
不幸的是我没有访问权限。我对开发者提出了一个问题,引用了示例记录的行为,以及新行为之前/之后的版本号,听起来像我可能会被卡住,直到我听到回声。感谢您的帮助。 –