【发布时间】:2011-01-30 15:04:38
【问题描述】:
new 操作符在现实生活中可以抛出异常吗?
如果是这样,除了杀死我的应用程序之外,我还有其他处理此类异常的选项吗?
更新:
是否有任何现实世界的new-heavy 应用程序检查故障并在没有内存时恢复?
另见:
【问题讨论】:
-
呃,你能改一下你的问题吗?
-
我必须在任何地方检查来自
new的异常,即使在使用小分配时也是如此?如果小尺寸的new失败,则意味着我不能分配 10s 的字节,甚至不能用throw new MyApplicationNeedMoreMemory重新抛出一些特定于应用程序的异常 -
好吧,你不应该将
new与 throw 一起使用......正如其他人所提到的,除非你有处理它的策略,否则你不应该捕获异常。 -
“恢复”是什么意思?向用户提供连贯的错误消息是有好处的。但是,内存不足错误通常源于程序错误或大型数据集,在任何一种情况下,添加更多内存都可能是不够的(在错误情况下,添加的内存量可能无济于事)。
-
@osgx:当然;我应该说,无论是给用户还是日志,提供连贯的错误消息而不是崩溃是有好处的。
标签: c++ exception new-operator out-of-memory