《Effective C++》学习笔记条款08 别让异常逃离析构函数

原创 2013年12月04日 12:18:17

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


    C++并不禁止析构函数吐出异常,但它不鼓励你这样做。C++不喜欢析构函数吐出异常。


    
如果可能导致异常:

  • 如果抛出异常,就结束程序。(强迫结束程序是个合理选项,毕竟它可以阻止异常从析构函数传播出去。
  • 捕获异常,但什么也不做。   

     如果某个操作可能在失败时抛出异常,而又存在某种需要必须处理该异常,那么这个异常必须来自析构函数以外的

某个函数。


    
 请记住:

  • 析构函数绝对不要吐出异常。如果一个被析构函数调用的函数可能抛出异常,析构函数应该捕捉任何异常,然后吞下它们(不传播)或结束程序。
  • 如果客户需要对某个操作函数运行期间抛出的异常做出反应,那么类应该提供一个普通函数(而非在析构函数中)执行该操作。   
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Effective c++学习笔记——条款08:别让异常逃离析构函数

Prevent exceptions from leaving destructors             本条款主要讲述当我们写代码的时候,如果出现了异常,让我们如何对异常处理,如何更加安...

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

// 条款08: 别让异常逃离析构函数 // 这个条款有歧义,并不是一定要在析构函数里面放异常, // 而是析构里面发生的异常不要抛出到析构外面去处理。 #include #include u...

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

结论: 1. 析构函数绝对不要吐出异常。如果一个被析构函数调用的函数可能抛出异常,析构函数应该能够捕捉任何异常,然后吞下他们(不传播)或结束程序。 2. 如果客户需要对某个操作函数运行期间抛出...

Effective C++笔记之五 别让异常逃离析构函数

1. 绝不要析构函数吐出异常,如果一个析构函数调用的函数发生异常,那么就析构函数要捕捉任何异常, 然后吞下它们或者结束程序!! 2.如果客户需要对某个函数在运行期间抛出的异常做出反应,那么,设计一个...

Effective C++ —— 别让异常逃离析构函数

C++ 并不禁止析构函数吐出异常,但不鼓励这么做。 1.如果一个被析构函数调用的函数可能抛出异常,则析构函数应该捕获这些异常,然后终止程序或吞下它们。 2.如果客户需要对某个函数在运行中抛出的异常...

Effective c++学习笔记——条款07:为多态基类声明virtual析构函数

Declare destructors virtual in polymorphic base classes        1、为什么要申明虚函数        C++程序设计中通常会存在一个基...

Effective c++学习笔记——条款5:了解C++默默编写并调用哪些函数

Know what functions C++ silently and calls        今天继续学习一个条款,看到了本条款,让我更加了解了C++的一些内部运行机理,思考了一番,觉得C++...

Effective C++--条款07:为多态基类声明virtual析构函数

假设我们要设计一系列的计时器,我们先声明一个TimeKeeper基类: //一个计时器的基类 class TimeKeeper { public: TimeKeeper(); ~Tim...

Effective C++——》条款7:为多态基类声明virtual析构函数 .

严格来说,多态分为编译时多态和运行时多态,编译时多态是函数的重载,而运行时多态则是迟绑定技术,即根据基类指针或引用的实际指向来决定采取何种行动,一般来说,多态特指运行时多态。下面我们来举有关C++多态...

(原文)Effective C++条款7:为多态基类声明VIRTUAL析构函数

今天碰到一个bug,查了半天发现是某位虚基类没有定义虚析构函数,delete时导致派生类没有正确释放资源,遂从网上搜到一篇文章,留个记号 关于virtual desctructor的详细讨论。同样来...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《Effective C++》学习笔记条款08 别让异常逃离析构函数
举报原因:
原因补充:

(最多只允许输入30个字)