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

什么时候适合使用C++异常?

如何解决《什么时候适合使用C++异常?》经验,为你挑选了1个好方法。

我正在尝试设计一个需要动态分配一些内存的类.

我曾计划在构建期间分配它所需的内存,但是如何处理失败的内存分配?我应该抛出异常吗?我在某处读到异常应仅用于"特殊"情况,而内存耗尽对我来说似乎不是特例.

我应该在单独的初始化例程中分配内存并检查故障,然后优雅地销毁类实例吗?

或者我应该使用例外吗?如果这些内存分配失败,该类将没有任何用处.


编辑:共识似乎是内存不足是一个例外情况.

会看到如何去做这个..谢谢.. :)



1> LeopardSkinP..:

假设您使用new来分配内存,并且没有覆盖new运算符,std::bad_alloc如果它无法正确分配内存,它将自动抛出异常.

我在某处读到异常应仅用于"特殊"情况,而内存耗尽对我来说似乎不是特例.

耗尽内存对我来说似乎是一个非常特殊的情况:)

处理这种情况非常困难.您可能希望向应用程序的用户返回有意义的错误,但如果由于内存不足而导致问题,您甚至无法负担分配错误消息的内存.这真的是一个抓住22的情况.

有一种防御性编程技术(有时称为内存降落伞或雨天基金),您可以在应用程序启动时分配一块内存.然后bad_alloc,当您处理异常时,释放此内存,并使用可用内存正常关闭应用程序,包括向用户显示有意义的错误.这比崩溃要好得多:)

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