catch(...) 没有捕获异常,我的程序仍然崩溃

2024-06-28

我的测试仪遇到问题,我的应用程序在初始化时崩溃。我添加了更多的日志记录和异常处理,但它仍然崩溃并显示通用的“此程序已停止工作”消息,而不是触发我的错误处理。

鉴于我的 main() 看起来像这样并且有catch(...)什么情况下不会触发?

try{
    simed::CArmApp app(0, cmd);
    for(bool done = false;!done;) 
    {
        done = !app.frame();
    }
} catch(const std::runtime_error &e){
    handleApplicationError(e.what());
    return -1;
} catch(...) {
    handleApplicationError("Unknown Error");
    return -999;
}

我的代码正在调用一个进行 OpenGL 渲染的库,我认为这是出了问题的地方。


如果是 C++catch(...)块没有捕获错误,可能是因为 Windows 错误。

在Windows上有一个概念叫做结构化异常处理 http://msdn.microsoft.com/en-us/library/windows/desktop/ms680657(v=vs.85).aspx这就是当发生不好的事情时操作系统引发“异常”的地方,例如取消引用无效的指针、除以零等。我说“异常”是因为这些不是 C++ 异常;而是因为它们不是 C++ 异常。相反,这些是 Windows 以 C 风格方式定义的严重错误 - 这是因为 Win32 是用 C 编写的,因此 C++ 异常不可行。

也可以看看:

  • C++ 异常和结构化异常之间的区别 https://stackoverflow.com/questions/3786647/difference-between-a-c-exception-and-structured-exception
  • try- except 语句 https://learn.microsoft.com/en-us/cpp/cpp/try-except-statement?view=msvc-170
  • 获取堆栈跟踪的方法EXCEPTION_POINTERS struct http://www.codeproject.com/Articles/41923/Get-the-call-stack-when-an-exception-is-being-caug

根据评论更新

如果您想要 C++ 异常处理和 SEH,也许您可​​以尝试以下(未经测试的)代码:

__try
{
    try
    {
        // Your code here...
    }
    catch (std::exception& e)
    {
        // C++ exception handling
    }
}
__except(HandleStructuredException())
{
    // SEH handling 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

catch(...) 没有捕获异常,我的程序仍然崩溃 的相关文章

随机推荐

  • PHP CLI 有几秒钟的延迟

    当我在 CLI 模式下运行 PHP 时 CentOS 6 5 下的 PHP 5 6 6 使用 VirtualBox 作为虚拟机运行 即使我只检查版本并且禁用 php ini 文件 也会有几秒钟的延迟 time php n v PHP 5 6
  • 字符串常量池与字符串池

    我对这两件事感到困惑 我需要帮助 请澄清我的疑问 字符串常量池和字符串池是否是同一个概念 我面试的时候就面临这个问题 我已经阅读了很多网站和博客 但是我的疑问还没有消除 请消除我的疑问 提前致谢 两者是同一件事 字符串常量池包含consta
  • Sitecore 搜索谓词生成器多关键字搜索与提升无法按预期工作

    我有包含以下字段的 sitecore 页面 lucene 文档 Title Filename Content 文件内容 我正在创建这些搜索并有以下要求 包含整个短语的点击title应首先返回字段 包含整个短语的点击filename字段应该其
  • 是否有任何 JavaScript 缩小器可以保留换行符?

    来自客户端的错误报告总是在第 1 行报告错误 因为文件已缩小 这不是很有用 我想在保留换行符的同时缩小代码 以便获得有意义的行号 有没有JavaScript缩小器 https en wikipedia org wiki Minificati
  • 注入的类名编译器差异

    考虑这段代码 struct foo int main foo foo a 我希望这是格式良好的 声明类型的变量foo根据 class 2 中的规则 N4140 重点是我的 A 班级名称被插入到紧随其声明之后的作用域中班级名称被看到 The
  • 如何对 SwiftyJSON JSON 对象进行子集化

    我正在构建一个 iOS 应用程序 其中我的一个 API 调用返回一个大型 JSON blob 我使用 SwiftyJSON 将其加载到 JSON 对象中 例如 它看起来像这样 data name object name id 1 descr
  • 在JQuery中获取上个月的第一个和最后一个日期

    我有这个脚本 var today new Date var dd today getDate var ddd today getDate 1 var dddd today getDate 2 var mm today getMonth 1
  • 调试时无法评估表达式

    当调试 asp net 代码 针对 IIS 运行并使用 Visual Studio 2013 并在断点中并尝试使用快速监视评估变量时 我经常遇到 无法评估表达式 的情况 从 asp net 项目文件夹中删除 suo 似乎可以解决问题 重新加
  • asp.net linkbutton onclientclick 和 postback

    当我将 ASP NET LinkBut ton 与 OnClientClick 属性一起使用时 我遇到了一些奇怪的行为 ASPX
  • 阅读共享偏好

    我正在为我的 Android 应用程序的设置菜单使用共享首选项 它工作得很好 但我不知道如何在我的代码中使用这些设置 例如 如何使用所选语言并在另一个活动中使用它
  • 使用张量流 tf-transform 进行数据标准化

    我正在使用 Tensorflow 对我自己的数据集进行神经网络预测 我做的第一个模型是与我计算机中的小数据集一起使用的模型 之后 我稍微更改了代码 以便使用具有更大数据集的 Google Cloud ML Engine 在 ML Engin
  • 使用 Auth0、withAuthenticationRequired 登录不会显示在 Gatsby 中

    我将 Gatsby 与 auth0 一起使用 当我用withAuthenticationRequired 然后我得到一个空白页 上面写着 重定向 import as React from react import withAuthentic
  • Python:pip 找不到 setup.py

    我怎样才能直接pip找到setup py My setup py文件位于 setuptools 3 5 1 I ran dustin dustin python setuptools 3 5 1 setup py egg info runn
  • 以编程方式添加超链接到列表项

    我想以编程方式获得以下 HTML ul li a href a li ul 我可以添加 li to ul But a to li 不可能 My code BulletedList ul new BulletedList ListItem l
  • React Table - useRowSelect 的单选输入

    如何在 React Table 中使用单选输入而不是复选框作为可选表 有一个复选框但没有单选按钮的示例 https github com tannerlinsley react table blob master examples row
  • 无法访问内存-gdb

    这是我的disas代码 Dump of assembler code for function main 0x00000000000006b0 lt 0 gt push rbp 0x00000000000006b1 lt 1 gt mov
  • Java进程的dump文件分析?

    如果我使用 Windbg 转储 Windows 上运行的 Java 进程 我可以 容易吗 分析 Java 堆 对象和线程吗 就像我可以使用 SOS 进行 Net 进程一样吗 否则 如何离线调试生产系统上发生的问题 Thanks Window
  • 等待异步TaskEx

    What is TaskEx In http www i programmer info programming c 1514 async await and the ui problem html start 1 http www i p
  • 类型错误:序列项 0:预期字符串,未找到 NoneType

    我正在努力改进战舰游戏 原始版本工作正常 没有错误 我编写了代码来帮助克服第一个版本每次都将船只放置在同一个位置的事实 因此我从一艘船 由两个方块组成 开始 我通过创建两个函数来完成此操作 第一个函数生成一个随机坐标 Destroyer 2
  • catch(...) 没有捕获异常,我的程序仍然崩溃

    我的测试仪遇到问题 我的应用程序在初始化时崩溃 我添加了更多的日志记录和异常处理 但它仍然崩溃并显示通用的 此程序已停止工作 消息 而不是触发我的错误处理 鉴于我的 main 看起来像这样并且有catch 什么情况下不会触发 try sim