【发布时间】:2017-07-31 12:59:48
【问题描述】:
在我们的应用程序中,我们将任何崩溃记录到包含堆栈跟踪的日志文件中。我们可以使用这些报告来确定崩溃原因。
问题是,我们倾向于在几个地方(实际上很多地方)捕获 std::exception,这使得在抛出 bad_alloc 时报告实际上毫无用处,因为堆栈跟踪丢失了。
如何改变行为,而不是抛出 bad_alloc,程序中止?由于我们在 3 种不同的操作系统中编写,因此使用了 3 种不同的 std 实现,我们希望避免更改 std 本身。
【问题讨论】:
-
也许您应该重新考虑您的设计,以捕获
std::exception,而不是捕获更多特定异常?捕捉std::exception几乎和捕捉...IMO 一样糟糕。