《Effective C++》条款08
来源:互联网 发布:卫星地图下载软件 编辑:程序博客网 时间:2024/05/16 07:04
条款08:别让异常逃离析构函数
考虑如下代码:
class Test{ public: ~Test(){...} //假设这个析构函数会抛出一个异常;};void dosomething(){ vector<Test> v; ... } //v在这里自动销毁
当 v被销毁,v内所有Test都应该全部销毁。假设v内含有10个Test,而在析构第一个元素期间,有个异常被抛出。其它9个Test也应该全部被销毁(负责他们保存任何资源都会发生资源泄露),当第二个Test元素销毁时调用析构函数又抛出异常,现在有两个同时作用的异常,这对C++而言太多了。在两个异常同时存在的情况下,程序若不是结束执行就是导致不明确的行为,本例中它会导致不明确行为,同理,其他stl库中的容器也会出现同样情况。
注意:析构函数绝对不要抛出异常。
阅读全文
0 0
- Effective C++:条款08
- 《Effective C++》条款08
- Effective C++:条款01
- Effective C++:条款02
- Effective C++:条款03
- Effective C++:条款04
- Effective C++:条款05
- Effective C++:条款06
- Effective C++:条款07
- 《effective C++》条款三
- 《effective C++》条款5
- 《effective C++》条款六
- Effective C++--经验条款
- Effective C ++ 条款34
- 《Effective C++》条款05
- 《Effective C++》条款06
- 《Effective C++》资源管理:条款13-条款15
- 《Effective C++》资源管理:条款16-条款17
- python验证IP代理是否可用
- PAT1007 素数对猜想
- git clone出现错误:(gnome-ssh-askpass:3530): Gtk-WARNING **: cannot open display: 然后求解决方案?
- Android微信支付集成和踩过的坑
- Oracle导入导出命令和相关介绍
- 《Effective C++》条款08
- MyEclipse中将普通Java项目convert(转化)为Maven项目
- opencv学习——简单阈值二值化
- 仿扫一扫实现拍摄框内的照片
- android学习(1)
- jpa查询语句自动变成了update
- C语言面试题大汇总之华为面试题
- java初始化顺序
- Java常见Lock(二): lock之ReentrantLock