在我们的应用程序中,我们将所有崩溃记录到包含堆栈跟踪的日志文件中。我们可以使用这些报告来确定崩溃原因。
问题是,我们倾向于在多个地方(实际上很多地方)捕获std :: exception,这使得当抛出bad_alloc时,由于堆栈跟踪丢失,报表实际上无用。
该如何更改行为,所以程序将中止而不是抛出bad_alloc?由于我们在3种不同的操作系统中进行编写,因此使用了3种不同的std实现,因此我们希望避免更改std本身。
除了重新考虑或重新设计以捕获更多定制的异常(我真的建议这样做)之外,您还有两种解决方案:
使用的“无抛出”变种operator new
和operator new[]
。检查返回的空指针,然后中止。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句