C++ 如何实现,坏的alloc将中止而不是抛出异常
在我们的应用程序中,我们将所有崩溃记录到包含堆栈跟踪的日志文件中。我们可以使用这些报告来确定崩溃原因 问题是,我们倾向于在几个地方(实际上很多地方)捕获std::exception,这使得报告在抛出bad_alloc时实际上是无用的,因为堆栈跟踪丢失了C++ 如何实现,坏的alloc将中止而不是抛出异常,c++,exception,bad-alloc,C++,Exception,Bad Alloc,在我们的应用程序中,我们将所有崩溃记录到包含堆栈跟踪的日志文件中。我们可以使用这些报告来确定崩溃原因 问题是,我们倾向于在几个地方(实际上很多地方)捕获std::exception,这使得报告在抛出bad_alloc时实际上是无用的,因为堆栈跟踪丢失了 如何更改行为,从而使程序中止,而不是抛出坏的\u alloc?当我们在3个不同的操作系统中编写时,使用了3种不同的std实现,我们希望避免更改std本身。除了重新思考或重新设计以捕获更多定制的异常(我真的建议)之外,您有两种解决方案: 使用的“禁
如何更改行为,从而使程序中止,而不是抛出坏的\u alloc?当我们在3个不同的操作系统中编写时,使用了3种不同的std实现,我们希望避免更改std本身。除了重新思考或重新设计以捕获更多定制的异常(我真的建议)之外,您有两种解决方案:
我检查了异常层次结构(),似乎我们永远不需要捕获std::runtime\u异常之外的任何内容,我们所有的内部异常类型都是从std::runtime\u异常派生的 所以我只是改变了我们程序中最广泛的捕获是std::runtime\u error,所以std::bad\u alloc变成了异常,我们可以正确地管理它
编辑:这只能在C++11之后使用,也许您应该重新考虑捕获
std::exception
的设计,而不是捕获更具体的异常?捕捉std::exception
几乎和捕捉一样糟糕。…
IMO.可能的dup