Effective 阅读笔记---条款29"为异常安全而努力是值得的"
来源:互联网 发布:淘宝排名查询流量 编辑:程序博客网 时间:2024/05/17 08:15
1.概述
异常安全的函数有两个必要条件;
(1)不泄漏任何资源:当异常被抛出时,必须保证资源得到泄漏,解决办法是使用RAII 手法.书中的例子是互斥锁的例子,具体做法是将加锁的操作封装到一个类的构造函数中,而把解锁的操作封装到析构函数中,当发生异常时一定会调用析构函数执行解锁. 再一个是使用智能指针管理堆上的内存,也是RAII手法的使用.
(2)不允许数据败坏.
2.
异常安全函数提供以下三个保证之一
(1)基本承诺:
如果对象被抛出,程序内的任何事物仍然保持在有效状态下.
(2)强烈保证:
如果函数成功就完全成功,如果函数失败,程序会保证函数调用之前的状态.及函数调用的”事务”
性.
(3)不抛出异常的保证.承诺不抛出异常.比如对内置类型的操作都提供不抛出异常的保证.
一般的函数在基本保证和强烈保证之间进行抉择.
使设计拥有强烈保证的手法利用 pimpl 结合copy and swap,这时候会有copy的开销.
另外函数的异常安全性同样也依赖于的所调用的函数的异常安全性.如果被调用函数不提供任何的异常安全性保证,那么你的函数也不提供任何的异常安全性,但这不是函数设计者的锅.
阅读全文
0 0
- Effective 阅读笔记---条款29"为异常安全而努力是值得的"
- 《Effective C++》学习笔记条款29 为“异常安全”而努力是值得的
- Effective C++:条款29:为“异常安全”而努力是值得的
- 读书笔记《Effective C++》条款29:为“异常安全”而努力是值得的
- 条款29:为"异常安全"而努力是值得的
- 条款29:为"异常安全"而努力是值得的
- 条款29:为“异常安全”而努力是值得的
- 条款29:为“异常安全”而努力是值得的
- 条款29 为“异常安全”而努力是值得的
- 条款29-30:为“异常安全”而努力是值得的与inlining的里里外外
- 《Effect C++》学习------条款29:为“异常安全”而努力是值得的
- 条款29:为异常安全努力是值得的
- Effective C++ Item 29 为”异常安全”而努力是值得的
- C++之为“异常安全”而努力是值得的(29)---《Effective C++》
- 《Effective C++》读书笔记之item29:为“异常安全”而努力是值得的
- effective c++为异常安全而努力是值得的(1)
- 为“异常安全”而努力是值得的
- item29: 为“异常安全”而努力是值得的
- 540. Single Element in a Sorted Array
- 反序列化漏洞的末日?JEP290机制研究
- Java的参数传递
- java学习笔记
- TCP/IP网络编程(一)
- Effective 阅读笔记---条款29"为异常安全而努力是值得的"
- WEEK8 java 作业
- Android常见代码颜色
- 算法(十一)拓扑排序
- Vim查找替换及正则表达式的使用
- spring整合redis时 因为版本问题导致bean注入不进去问题
- X Windows的理解与使用
- 平方数
- POJ2115---类似于青蛙约会(拓展gcd,同余方程)