gpt4 book ai didi

c++ - 异常安全 : Strong Guarantee vs Basic Guarantee

转载 作者:行者123 更新时间:2023-12-04 17:22:34 25 4
gpt4 key购买 nike

我现在正在尝试学习 C++,并且已经开始学习异常安全的主题。我很确定我理解四个不同级别的异常安全的含义。但是,有哪些具体的例子可以说明什么时候强保证不合适而基本保证合适?

最佳答案

强异常保证当然很好,在没有任何其他考虑的情况下应该提供。

但是,在某些情况下,提供强异常保证过于昂贵、过于复杂,甚至是不可能的。以下是一些示例:

  • 排序。如果排序谓词失败,你真的想要逻辑和存储来恢复原来的顺序吗?大多数用例不需要它。
  • 状态更改被捕获在不可变的仅附加日志或日志中。也许您可以写一条记录说“取消此操作”,但您不能删除已写的内容。
  • 内存已重新分配,数据已移动。将数据移回其原始位置可能毫无意义。例如,如果调整容器的大小,移动现有数据,然后添加新记录失败,将其调整为以前的大小可能会浪费时间,即使大小没有,也更容易保持新的更大容量改变。

在所有这些情况下,基本异常保证仍然有用,而且可能更合适。它可能允许程序在有效状态下继续,例如通过向用户返回一条错误消息。

关于c++ - 异常安全 : Strong Guarantee vs Basic Guarantee,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65271783/

25 4 0