gpt4 book ai didi

c++ - 当 __try __except 不能时如何在 C++ 中捕获错误

转载 作者:行者123 更新时间:2023-12-03 08:50:59 24 4
gpt4 key购买 nike

我有使用 3rd 方库的代码。

该库偶尔会引发访问冲突异常。一个基本的 try/catch 没有捕捉到错误,程序会硬崩溃。

我可以使用 __try __except 来捕获错误,记录它,然后优雅地退出程序。

第 3 方刚刚更新了他们的库,现在导致访问冲突错误的一小部分记录在生产中以“[程序名称]已停止工作”而死

在 Visual Studio 中,当单步执行时,我得到“Microsoft Visual Studio C 运行时库在 [程序名称] 中检测到 fatal error ”。

我已经更新了我的 __except 语句以捕获所有内容(或者我相信),它仍然会发生。

原__除了:

__except (eps = GetExceptionInformation(), ((GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION) 
? EXCEPTION_EXECUTE_HANDLER
: EXCEPTION_CONTINUE_SEARCH)) {
sprintf("error message");
result = 99;
}

新__除了:
__except (eps = GetExceptionInformation(), ((1 == 1)
? EXCEPTION_EXECUTE_HANDLER
: EXCEPTION_CONTINUE_SEARCH)) {
sprintf("error message");
result = 99;
}

最佳答案

仅供引用,您的异常过滤器中的第一个表达式 eps = GetExceptionInformation()似乎未使用。

另外,如果你想捕获所有异常,那么 __except (EXCEPTION_EXECUTE_HANDLER)应该是你所需要的。虽然我只推荐用于调试目的。

如果这没有捕获您的异常,则库可能正在尝试处理异常本身,并且库本身正在发生一些奇怪的事情。我会与图书馆的提供者核实,并询问这是否是一个已知问题。

关于c++ - 当 __try __except 不能时如何在 C++ 中捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40892948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com