声明:
- 文中内容收集整理自《Effective C++(中文版)第三版》,版权归原书所有。
- 本内容在作者现有能力的基础上有所删减,另加入部分作者自己的理解,有纰漏之处敬请指正。
条款29:为“异常安全”而努力是值得的
Strive for exception-safe code.
异常安全函数提供以下三个保证之一:
- 基本承诺:若果异常被抛出,程序内的任何事物仍然保持在有效状态下。
- 强烈保证:然后异常抛出,程序状态不改变。
- 不抛掷保证:承诺绝不抛出异常。
请记住:
- 异常安全函数即使发生异常也不会泄漏资源或允许任何数据结构破坏。这样的函数区分为三种可能的保证:基本型、强烈型、不抛异常型。
- “强烈保证”往往能够以copy-and-swap实现出来,但“强烈保证”并非对所有函数都可实现或具备实现意义。
- 函数提供的“异常安全保证”通常最高只等于其所调用之各个函数的“异常安全保证”中的最弱者。