C++异常处理机制

为了不让程序由于错误而中断,C++提供了异常处理机制。

简单的说,异常的抛出与捕捉的步骤如下:

(1)在底层函数throw异常对象;

(2)将可能抛出异常的程序段嵌在try块之中;

  (3)  紧随try块的catch块分别对不同类型的异常对象作出处理;

(4)如果匹配的处理器未找到,则运行函数terminate将被自动调用,其缺省功能是调用abort终止程序;

(5)处理不了的异常,可以在catch的最后一个分支,使用throw语法,向上扔。

异常对象是类对象时,用于接收异常对象有三种形式:

(1)catch(A  a)

(2)catch(A& a)

(3)catch(A* a)

第一种是直接以对象 a接收,a其实是通过A类的拷贝构造函数将异常抛出的对象复制给了它,所以系统会有两次构造和析构函数的调用

第二种是以引用对象a接收,那么a不会被重新构造,而是和异常抛出的对象共同表示同一块内存,所以系统只有一次构造和析构函数的调用

第二种是以指针对象a接收,虽然a与异常抛出的对象共同指向同一块内存,但是析构内存后,还需要手动释放指针变量,即delete a。

所以,在异常对象是类对象时,catch的形参要用引用来接收,这样既方便又不容易出错。

 
posted @ 2020-06-23 15:53  水墨雍和  阅读(146)  评论(0编辑  收藏  举报