码迷,mamicode.com
首页 > 编程语言 > 详细

Effective C++ 条款八 别让异常逃离析构函数

时间:2014-08-15 19:23:19      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:style   color   os   io   数据   ar   cti   div   

  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应该提供一个普通函数(不是在析构函数中)执行该操作。

Effective C++ 条款八 别让异常逃离析构函数,布布扣,bubuko.com

Effective C++ 条款八 别让异常逃离析构函数

标签:style   color   os   io   数据   ar   cti   div   

原文地址:http://www.cnblogs.com/zhuxuekui/p/3915344.html

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