Effective C++ Iem08 Note
来源:互联网 发布:正方教务网络管理系统 编辑:程序博客网 时间:2024/05/20 18:50
//Effective C++ Item08#include<iostream>#include<cstring>using namespace std;//析构函数绝对不要吐出异常。如果一个被析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下它们(不传播)或结束程序//如果客户需要对某个操作函数运行期间抛出的异常做出反应,那么class应该提供一个普通函数(而非在析构函数中)执行该操作。//例如对于std::vector<Widget> v,当vector v被销毁,它有责任销毁其内含的所有Widgets//假如在析构第1个和第2个Widget时都抛出了异常,就有2个同时作用的异常。在两个异常同时存在的情况下,程序若不是结束执行就是导致不明确行为。class DBConnection{public:static DBConnection create();void close();};//创建DBConn用来管理DBConnection资源,为确保客户不忘记在DBConnection对象身上调用close,在析构函数中调用closeclass DBConn{public:DBConn(DBConnection db){this->db = db;closed = false;}void close(){db.close();closed = true;}//在析构函数中必须对异常进行处理,或者结束程序,或者吞下因调用close而发生的异常~DBConn(){if (!closed){try{db.close();}catch (std::exception){//...//制作运转记录,记下对close的调用失败//std::abort();}}}private:DBConnection db;bool closed;};int main(){DBConn dbc(DBConnection::create());}
0 0
- Effective C++ Iem08 Note
- 《Effective C++》 Reading Note 1
- 《Effective C++》 Reading Note 2
- 《Effective C++》 Reading Note 3
- 《Effective C++》 Reading Note 4
- Effective C++ Item02 Note
- Effective C++ Item03 Note
- Effective C++ Item04 Note
- Effective C++ Item05 Note
- Effective C++ Item06 Note
- Effective C++ Item07 Note
- Effective C++ Item09 Note
- Effective C++ Item11 Note
- Effective C++ Item12 Note
- Effective C++ Item13 Note
- Effective C++ Note
- Reading note of Effective C++
- Effective C++ (reading note)
- Android Fragment 基本介绍
- builder模式
- java根据用户生日计算年龄
- 搭建太网控制电机的框架
- IOS开发——强制横屏/强制竖屏
- Effective C++ Iem08 Note
- Eclipse 快捷键
- DWR的全局推送
- java实验1:综合图形界面程序设计
- POSTGRESQL 数据库 系统视图
- DWR的精确推送
- 图文详解android binder
- 编程-策略模式
- java中从控制台输入多行数据 按回车键输入空行结束