C++ 未处理的异常

2023-11-21

如果发生未处理的异常,C++ 是否提供了一种“显示”可视化内容的方法?

我想做的是做一些像assert(unhandled exception.msg())如果它确实发生(如下面的示例所示):

#include <stdexcept>

void foo() {
   throw std::runtime_error("Message!");
}

int main() {
 foo();
}

我希望这种代码不会立即终止(因为异常未处理),而是显示自定义断言消息(Message!实际上)。

那可能吗?


标准没有指定实际显示未捕获异常的消息的方法。然而,在许多平台上,无论如何都是可能的。在 Windows 上,您可以使用 SetUnhandledExceptionFilter 并提取 C++ 异常信息。使用 g++(无论如何适当的版本),终止处理程序可以使用如下代码访问未捕获的异常:

   void terminate_handler()
   {
       try { throw; }
       catch(const std::exception& e) { log(e.what()); }
       catch(...) {}
   }

事实上,g++ 的默认终止处理程序执行与此类似的操作。您可以使用 set_terminate 设置终止处理程序。

简而言之,没有通用的 C++ 方法,但有一些方法取决于您的平台。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 未处理的异常 的相关文章

随机推荐

  • 正则表达式字边界和特殊字符

    我有一个正则表达式来转义搜索字符串中的所有特殊字符 这很好用 但是我似乎无法让它与单词边界一起工作 例如 用干草堆 add or add 和针 正则表达式 gi匹配 然而正则表达式 b gi没有 关于如何实现这项工作有什么想法吗 Using
  • 无法建立 SSL 连接,如何修复我的 SSL 证书?

    我试图wget到我自己的盒子 它不能是 wget 中的内部地址 另一位开发人员是这么说的 当我得到时 我得到这个 wget http example com 2013 03 01 15 03 30 http example com Reso
  • Java中的正则表达式用于验证用户名

    我正在尝试使用 Java 中的用户名链 规则如下 长度 gt 3 有效字符 a z A Z 0 9 点 破折号和下划线 有人可以帮我解决正则表达式吗 尝试这个正则表达式 a zA Z0 9 3
  • 使用 MVVM 上下文菜单项命令绑定 WPF

    我知道这个问题已经在许多网站和 StackOverFlow 中以不同的方式被问过很多次 但我找到的所有答案都没有帮助我 准确地说 我无法理解它们并在我的应用程序中实现 所以我想从我的应用程序中添加一些代码 以便你们可以更好地帮助我 问题陈述
  • python 中 Burrows-Wheeler 的性能问题

    我试图实施布罗斯 惠勒在Python中进行转换 这是在线课程的作业之一 但我希望我已经做了一些工作才有资格寻求帮助 该算法的工作原理如下 获取一个以特殊字符 在我的例子中为 结尾的字符串 并从该字符串创建所有循环字符串 按字母顺序对所有这些
  • 为什么inline-block会导致这个div有高度呢?

    jsFiddle Demo 我似乎无法弄清楚为什么使用display inline block会导致这个 div 当包含元素被隐藏时 元素以某种方式获得高度 这不会发生在display block html div style displa
  • 在 hadoop 中并行运行作业

    我是 hadoop 新手 我已经设置了一个 2 节点集群 如何在 hadoop 中并行运行 2 个作业 当我提交作业时 它们按照 FIFO 顺序一项一项地运行 我必须并行运行这些作业 如何实现这一目标 谢谢 MRK Hadoop 可以配置多
  • 为什么 WaitForMultipleObjects 在使用多个线程句柄时会失败?

    在下面的测试程序中 每个测试线程将其句柄添加到全局TThreadList当它开始执行时 并在执行即将结束时从同一列表中删除其句柄 此外 出于测试目的 每个线程确保在主线程锁定列表之前添加其句柄 以复制其句柄并开始等待它们完成 这些线程还确保
  • 使用 find 和 sed 将文件名添加到文件开头

    使用以下内容 我将文件名添加到每行的前面 并将输出发送到单个文件 ls while read file do sed e s file g file gt out done 我想执行同样的操作sed替换但使用find and exec or
  • Xcode 4.2 iOS 5:来自 UITableView 的多个 Segues

    我现在开始使用适用于 iOS5 的 Xcode 4 2 有一些更改 我现在遇到一个问题 我无法找到解决方法 我正在使用 UITablwView 做一个示例 该视图以编程方式填充了 2 个部分 第 1 部分仅包含 1 行 第 2 部分包含 3
  • 访问Linux /dev/USB作为标准文件与USB设备通信

    我正在研究在 Linux 中与 USB 设备通信的方法 并且不想编写 Linux 内核驱动程序 我知道 libusb 存在并且是一个可以工作的用户空间库 但是我们的嵌入式设备不支持 usbfs 并且更改内核以添加支持确实很痛苦 所以我的问题
  • iOS13 模拟器上的 UIDocumentBrowserViewController 错误“无法为 url 创建 urlWrapper”

    我有一个非常奇怪的问题UIDocumentBrowserViewController在 iOS 13 上测试时 importHandler newDocumentURL move 似乎没有任何原因崩溃 DocumentManager Can
  • 为什么Lucene在索引大文件时会导致OOM?

    我正在使用 Lucene 2 4 0 和 JVM JDK 1 6 0 07 我不断收到OutOfMemoryError Java heap space 当尝试索引大型文本文件时 示例 1 对 5 MB 文本文件建立索引会导致内存不足 最大容
  • 模拟文本输入字段上的退格键

    有人可以提供一个很好的例子来模拟退格键 on a
  • 更改java控制台输出的颜色

    我想知道是否有什么办法可以设置我在 Java 中输出到控制台的文本的颜色 是否特定于系统并不重要 因为该程序只能在我的 Windows 7 x64 笔记本电脑上运行 这个问题 在 java eclipse 控制台中更改颜色几周前被问到 并且
  • 写入Main Bundle 目录。允许吗?

    我非常确定在 iOS 中不可能在主 Bundle 中写入 例如如下操作 NSString path NSBundle mainBundle pathForResource Data ofType plist something xmlDat
  • Three.js 截图

    我需要制作网站的屏幕截图 我尝试使用 html2canvas 和所有它的工作 但问题是我正在使用 THREE WebGLRenderer 和 THREE CSS3DRenderer 用于 webgl 中的 html 所以当我制作屏幕截图时
  • 如何为相同大小分区的 Spark RDD 定义自定义分区器,其中每个分区具有相同数量的元素?

    我是 Spark 新手 我有一个大型元素数据集 RDD 我想将其划分为两个大小完全相同的分区 以保持元素的顺序 我尝试使用RangePartitioner like var data partitionedFile partitionBy
  • 序列化有时是数组的 Json 属性[重复]

    这个问题在这里已经有答案了 有没有什么方法可以在一次操作中序列化从十进制到十进制 的 Json 对象属性 在我的 Json 产品提要中 特价商品表示为数组 正常价格 促销价格 普通商品只是价格 就像这样 product umbrella p
  • C++ 未处理的异常

    如果发生未处理的异常 C 是否提供了一种 显示 可视化内容的方法 我想做的是做一些像assert unhandled exception msg 如果它确实发生 如下面的示例所示 include