析构中出现调用异常一般采用的方法: 一是只要抛出异常就结束程序: DBConn::~DBConn(){ try{ db_.close(); }catch(...){ .... std::abort();//结束程序,可以强制"不明确行为"死掉 } } 二是吞掉异常: DBConn::~DBConn(){ try{ db_.close(); }catch(...){ ... } } 三更好的的方法是留有机会处理这个异常: class DBConn{ public: DBConn(DBConnection& db):db_(db){} void close(){ db_.close(); isClosed_ = true; } ~DBConn(){ if(!isClosed_){ //使用以上两种解决方案之一来进行解决. } } ... private: DBConnection& db_; bool isClosed_; };