当前位置:  开发笔记 > 编程语言 > 正文

您多久检查一次C++新指令中的异常?

如何解决《您多久检查一次C++新指令中的异常?》经验,为你挑选了2个好方法。

我今天刚开始阅读Effective C++并且到了作者谈论operator new的地步.

这本书很好地解释了如何捕获(具有不同程度的优雅)std :: bad_alloc异常,如果内存不足,操作员可以引发该异常.

我的问题是:当没有足够的内存来实例化一个对象时,你经常检查一下这个案例,如果有的话?为什么?麻烦值得吗?



1> Rob Kennedy..:

当我能回答这个问题时,我会抓住异常:

一旦你发现了异常,你会怎么做?

大多数时候,我的回答是,"我不知道.也许我的来电者知道." 所以我没有抓住异常.让它冒泡到一个知道更好的人.

当你发现异常并让你的功能继续运行时,你已经对你的程序说:"没关系.这里的一切都很好." 当你这么说时,一切都会好起来的.所以,如果你的内存耗尽,那么在你处理之后std::bad_alloc,你就不应该再没有内存了.您不应该只从函数返回错误代码,因为调用者必须明确检查该错误代码,并且您仍然内存不足.您对该异常的处理应该释放一些内存.清空一些缓存,将一些东西提交到磁盘等等.但是你的程序中有多少函数确实要负责减少程序的内存使用量?

如果无法解决触发异常的问题,则不要处理异常.



2> Edouard A...:

问题是,当内存不足时,除了写入崩溃转储并退出程序之外,通常没什么可做的.因此,检查程序中的每个新内容都是没用的.

一个例外是当您为例如加载文件分配内存时,在这种情况下,您只需要通知用户没有足够的内存可用于请求的操作.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有