如何实现,坏分配中止而不是抛出异常

科瓦雷克斯

在我们的应用程序中,我们将所有崩溃记录到包含堆栈跟踪的日志文件中。我们可以使用这些报告来确定崩溃原因。

问题是,我们倾向于在多个地方(实际上很多地方)捕获std :: exception,这使得当抛出bad_alloc时,由于堆栈跟踪丢失,报表实际上无用。

该如何更改行为,所以程序将中止而不是抛出bad_alloc?由于我们在3种不同的操作系统中进行编写,因此使用了3种不同的std实现,因此我们希望避免更改std本身。

一些程序员哥们

除了重新考虑或重新设计以捕获更多定制的异常(我真的建议这样做)之外,您还有两种解决方案:

  1. 使用的“无抛出”变种operator newoperator new[]检查返回的空指针,然后中止。

  2. 设置一个new调用处理程序std::terminate

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

抛出数据异常中止

我如何为整个类抛出异常,而不是逐个方法

如何接收消息,而不是在 Symfony 中抛出异常?

如果输入不是bigDecimal,如何抛出异常并再次扫描?

跳过坏元素而不是抛出 scala.MatchError

异常抛出如何工作?

为什么抛出异常而不是让代码抛出异常?

重新抛出异常难度-异常使程序崩溃而不是重新抛出

UFW抛出“坏端口”

KeyedProcessFunction实现抛出空指针异常?

当抛出异常时,如何适当地省略UnboundLocalError:分配前引用的局部变量?

如何在不抛出异常并防止编译的情况下显示API中未实现的方法

返回一个异常而不是抛出

在方法而不是类上抛出异常

抛出UncheckedIOException而不是其他预期异常

如何使用Swift 4.2解决JSON可解码的坏异常?

如何使用空列表而不是null抛出自定义异常?

在clickhouse中,如何在转换失败时返回null而不是抛出异常?

如何使用RxJava 1.x将异常抛出给调用者,而不是处理它?

如何捕获重新抛出的异常?

如何知道抛出哪个异常

如何创建并抛出Java异常?

如何明确不抛出异常?

如何检查是否抛出异常

如何捕获 DataReceivedEventHandler 抛出的异常?

异常不抛出我的字符串-抛出文字异常而不是我的抛出

如何处理空列表,List Alternated[0] 在为 C2 分配空值时抛出异常

抛出“异常 A:异常 B”时如何断言“异常 B”?

当实现破坏其接口的约定时,抛出什么异常?