gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 19:37:48 25 4
gpt4 key购买 nike

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

我计划在构造期间分配它需要的内存,但我该如何处理失败的内存分配?我应该抛出异常吗?我在某处读到异常应该只用于“异常(exception)”情况,内存不足对我来说似乎不是异常(exception)情况..

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

或者我应该改用异常?如果这些内存分配失败,该类将无事可做。


编辑:共识似乎是内存不足是一个异常(exception)情况。

将看看如何解决这个问题..谢谢.. :)

最佳答案

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

I read somewhere that exceptions should only be used for "exceptional" cases, and running out of memory doesn't seem like an exceptional case to me..

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

这种情况很难处理。您可能希望向您的应用程序的用户返回一个有意义的错误,但如果这是由于内存不足引起的问题,您甚至可能无法负担分配错误消息的内存。这确实有点像 22 条军规。

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

关于c++ - 什么时候适合使用 C++ 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/584599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com