我有使用第三方库的代码。
该库会引发偶尔的访问冲突异常。一个基本的try / catch没有捕获错误,程序会很难崩溃。
我能够使用__try __except来捕获错误,记录错误,然后优雅地退出程序。
第三方刚刚更新了他们的库,现在导致访问冲突错误的一小部分记录在生产中死亡,而#34; [程序名称]已停止工作"
在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;
}
答案 0 :(得分:0)
只是一个友好的FYI,您的例外过滤器eps = GetExceptionInformation()
中的第一个表达式似乎未被使用。
此外,如果您想捕获所有异常,那么__except (EXCEPTION_EXECUTE_HANDLER)
应该就是您所需要的。虽然我只建议用于调试目的。
如果这不能捕获您的异常,那么库可能正在尝试处理异常本身,并且库本身正在进行一些时髦的事情。我会咨询图书馆的提供者,并询问这是否是一个已知问题。