Item 8:别让异常逃离析构函数【effective C++读书笔记】
来源:互联网 发布:一起牛软件下载 编辑:程序博客网 时间:2024/05/18 01:03
不要让异常出现在析构函数里,如果是析构函数中调用的函数导致的异常,应在析构函数中对异常作出处理(try,catch),吞下异常(不传播)或结束程序。举例中close()是需要调用的函数。
① 如果程序遭遇一个“于析构期间发生的错误”后无法继续执行,“强迫结束程序”是个合理选项,毕竟它可以阻止异常从析构函数中传播出去。如果想要抛出异常后结束,通常通过调用abort完成:
A::~A(){ try{ close(); } catch(…){//记录调用失败 std::abort(); }}
②一般来说将异常吞掉是个坏主意,但有时候也比草率结束程序或者导致不明确行为要好。如果想要吞下异常:
A::~A(){try{ close(); } catch(…){//记录调用失败 }}
③以上两种方法都没办法对可能出现的问题作出处理,因此最佳的策略是重新设计接口,让用户可以自行对程序运行期间抛出的异常进行处理,当用户没有处理的时候才调用析构函数里的函数。那么类中应该提供一个普通的函数(非析构函数)执行该操作:
class A{public:void func(){close();closed=true;} ~A() { if(!closed) { try{ close(); } catch(…){ //记录调用失败 } } }private:bool closed;}
阅读全文
0 0
- Item 8:别让异常逃离析构函数【effective C++读书笔记】
- 读书笔记《Effective C++》条款08:别让异常逃离析构函数
- Effective C++ Item 8 别让异常逃离析构函数
- Effective C++ Item 8 别让异常逃离析构函数
- Effective C++ Item 08-别让异常逃离析构函数
- Effective C++读书笔记之八:别让异常逃离析构函数
- 《Effective C++读书笔记》--条款08:别让异常逃离析构函数
- effective C++ 08_别让异常逃离析构函数 读书笔记
- Item 08:别让异常逃离析构函数
- effective c++ 别让异常逃离析构函数
- 《Effective C++》学习笔记条款08 别让异常逃离析构函数
- Effective C++——》 条款08:别让异常逃离析构函数
- Effective C++:条款08:别让异常逃离析构函数!
- [Effective C++]条款08 别让异常逃离析构函数
- Effective C++ 条款8:别让异常逃离析构函数
- 别让异常逃离析构函数
- 条款8:别让异常逃离析构函数
- 8别让异常逃离析构函数
- SQLite数据库简介
- Arduino构建与解析Json字符串实例
- CF C. Rumor
- 强推 | Google&微软数据科学家们给你讲Keras实战
- 微信小程序电商实战-首页(上)
- Item 8:别让异常逃离析构函数【effective C++读书笔记】
- 线性表的链式存储结构
- QtableWidget单元格设置和操作
- Java异常
- kubernetes Pull Image 鉴权过程
- dubbo+zookeeper安装配置
- CentOS 7.0 进入单用户模式修改Root密码
- Windows安全 无法打开这些文件
- vim中设置tab键的宽度