c++ - 什么可以防止异常被捕获?

标签 c++ winapi

我有一个在 VS2005 中开发的 Win32 C++ 应用程序。当算法崩溃并尝试引用 std::vector 的末尾而不是捕获 std::vector 时,有一个 try {} catch (...) {} 包裹在一段代码中,但仍然有 3 个函数深异常,程序进入 VS 调试器,告诉我有一个未处理的 win32 异常,并且在我的函数上方的调用堆栈中找到以下内容:

msvcr80.dll!:inavlid_parameter_noinfo()
msvcr80.dll!:invoke_watson(....)
msvcr80.dll!:_crt_debugger_hook(...)

如何防止调试器被调用?这种情况发生在 30 分钟的模拟结束时,此时我会丢失所有结果,除非我能够捕获并记录异常。这个和类似的 try/catch 结构在过去一直有效 - 是否有编译器设置会影响它?帮忙?

最佳答案

您可能希望将非 C++ 异常转换为 C++ 异常。 Here这是如何执行此操作的示例。

关于c++ - 什么可以防止异常被捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8089851/

相关文章:

c++ - round()函数产生一个奇数

c++ - Magick++ 获取像素颜色。 pixelpacket 似乎不存在了

python - 从 Python 代码创建单个 exe 文件

SetWindowHookEx(WH_CALLWNDPROC) 可以挂起整个系统吗?

c++ - 如何销毁在堆上创建的 STL 队列?

c++ - KD 树仍然是用于移动物体的最佳算法之一吗?

c++ - 指针导致访问冲突

windows - 如果窗口跨越多个显示器,我无法绘制它

c++ - 使用 SHGetPathFromIDList 将 PIDL 转换为文件路径

C# 使用自定义环境变量以管理员身份启动子进程(在 CMD 窗口中)