知识卡片
异常安全两层保证
内容
基本异常安全保证要求异常发生后程序不变量仍完整且不泄漏资源;强保证还要求状态回到调用前。评估 make、emplace 或资源转交路径时,先明确承诺层级,再检查失败点是否仍有所有者负责清理。
参考来源
- 位置:《Effective Modern C++》简介与资源(源文件:_epub-src/EPUB/text/ch001.xhtml)
- 结论依据:原文定义基本保证与强保证,说明二者对状态与资源泄漏的要求不同。
- 原始内容:这样的函数保证调用者在异常抛出时,程序不变量保持完整(即没有数据结构是毁坏的),且没有资源泄漏。有强异常安全保证的函数确保调用者在异常产生时,程序保持在调用前的状态。