【发布时间】:2021-03-24 01:48:21
【问题描述】:
我现在正在尝试学习 C++,并且已经了解了异常安全的主题。我很确定我理解四个不同级别的异常安全的含义。但是,有哪些具体的例子可以说明强保证不合适而基本保证合适的情况?
【问题讨论】:
-
最终,异常保证是关于确保对象处于一致状态,以便可以安全地销毁对象(基本保证)或撤消对象上的所有操作,以便对象恢复到之前的状态抛出异常时(强保证)。在必须在一系列步骤中更改对象,多个步骤已完成,然后可能引发异常的情况下,强保证是不合适的(因此已完成的步骤无法安全撤消,或者撤消所需的时间/资源)步骤是禁止的)。
-
@Peter:在基本保证的情况下抛出异常后,破坏不是唯一可能的操作。最低限度的基本保证允许调用任何没有先决条件的方法,例如
is_open()在文件上。