码迷,mamicode.com
首页 > 其他好文 > 详细

条款8:别让异常逃离析构函数

时间:2017-10-01 15:45:45      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:函数   存在   标准库   cto   eth   标准   bsp   异常   idg   

例如:
class Widget 
{
public:
~Widget(){...}
};
void doSomething()
{
vector<Widget>v;
}
如果v中有10个Widget,销毁第一个时发生析构函数抛出异常,销毁第二个时析构函数又抛出异常,那么两个异常同时存在的情况下:程序要么结束执行要么导致不明确行为。
因此:析构函数绝对不要吐出异常。如果一个被析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下它们或结束程序。
如果客户需要对某个操作函数运行期间抛出的异常作出反应,那么class应该提供一个普通函数而非在析构函数中执行该操作。
 
注:STL标准库的异常我不是很会使用

条款8:别让异常逃离析构函数

标签:函数   存在   标准库   cto   eth   标准   bsp   异常   idg   

原文地址:http://www.cnblogs.com/CoderZSL/p/7617201.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!