博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Effective C++ 条款八 别让异常逃离析构函数
阅读量:5954 次
发布时间:2019-06-19

本文共 647 字,大约阅读时间需要 2 分钟。

class DBConn //这个class用来管理DBConnction对象
{
public:
 
//自己设计一个新的DBConn接口   方法3
void close()
{
db.close();
closed = true;
}
 
 
~DBConn() //确保数据库连接总是会被关闭
{
//db.close();
 
if (!closed)
{
try
{
db.close();
}
catch()
{
//制作运转记录,记下对close的调用失
}
}
}
protected:
private:
DBconnection db;
bool closed;
};
 
//假如调用析构函数发送错误,导致异常。析构函数会传播该异常,这时该怎么办?
//
 
DBConn::~DBConn
{
try
{
db.close();
}
catch ()
{
//制作运转记录,记下对close的调用失败   方法1
// abort(); //终止某个进程               方法2
 
}
};

 

记住:

         1、析构函数绝对不要吐出异常。如果一个被析构的函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吐下他们或结束程序。

      2、如果客户需要对某个操作函数运行期间抛出的异常做出反应,那么class应该提供一个普通函数(不是在析构函数中)执行该操作。

转载于:https://www.cnblogs.com/zhuxuekui/p/3915344.html

你可能感兴趣的文章
第2章 变量和基本类型 附3---底层const和顶层const
查看>>
一次完整的HTTP请求响应过程(很详细)
查看>>
[UIKit学习]03.关于UILable
查看>>
算法 之排序
查看>>
《世界是数字的》读后感
查看>>
看博客学学Android(二十一)
查看>>
Python关于File学习过程
查看>>
java基础 - 综合训练
查看>>
[20171106]配置客户端连接注意.txt
查看>>
[20170612]FOR ALL COLUMNS SIZE repeat(11g).txt
查看>>
【转载】规则化和模型选择(Regularization and model selection)
查看>>
跨域请求
查看>>
java基础学习之对象转型
查看>>
通过判断流的头 判断文件类型
查看>>
m个苹果放入n个盘子问题
查看>>
HDU - 3564 Another LIS(LIS+线段树)
查看>>
mongodb高级聚合查询
查看>>
分析网站的用户行为
查看>>
Java中的继承:父类和子类的关系
查看>>
git 入门操作指令
查看>>