如何实现,bad-alloc中止而不是抛出异常

kov*_*rex 2 c++ exception bad-alloc

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

问题是,我们倾向于在几个地方(实际上很多)捕获std :: exception,这使得在抛出bad_alloc时报告实际上没用,因为堆栈跟踪丢失了.

如何更改行为,所以程序中止而不是抛出bad_alloc?当我们在3个不同的操作系统中编写时,使用3个不同的std实现,改变std本身是我们想要避免的.

Som*_*ude 7

除了重新思考或重新设计以捕捉更多量身定制的异常(我真的推荐),你有两个解决方案:

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

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