C++之异常处理

C++处理异常的机制是由3个部分组成:检查(try),抛出(throw),捕捉(catch)。把需要检查的语句放在try块中,throw用来当出现异常时发出一个异常信息,而catch则用来捕捉异常信息,就处理它。

       异常处理的语法如下:

       (1)throw语句的形式为:

                throw 表达式

       (2)try-catch的结构为:

                 try

                {被检查的语句}

                catch ( 异常信息类型 [ 变量名 ] )

                {进行异常处理的语句}

                说明:

                        1,被检测的部分必须放在try块中,否则不起作用。

                        2,try 块和catch块必须作为一个整体出现,不能没有try块只有catch块,在二者之间也不能插入其它语句。但是在一个try-catch结构中,可以只有try块而没有catch块,把catch处理块放在其他函数中。

                        3,try和catch块中必须有用花括号包起来的复合语句,即时花括号中只有一个复合语句也不能省略花括号。

                        4,一个try-catch结构中只能有一个try块,但却可以有多个catch块,以便与不同的异常信息匹配。

                        5,catch后面的圆括号中,一般只写异常信息的类型名,如:   catch(double),只要throw抛出的是一个double类型的变量,catch就能捕获这个异常。

                        6,catch还有另一种写法,即除了指定类型名外,还可以指定变量名:catch(double b ),此时如果throw抛出的时double类型的变量a ,则catch在捕获异常信   息a的同时,还使b获得a的值。比如当抛出的时类对象时,我们希望在catch块中显示该对象的某些信息。

                        7,如果在catch块中没有指定异常信息的类型,而用了删节号“...",则表示可以捕获任何类型时异常信息。如   catch(...){cout<<"error"<<endl;}

                        8,try-catch结构可以与throw出现在一个函数中,也可以不出现在一个函数中,当throw抛出异常信息后,首先在本函数中找寻与之匹配的catch,如果在本层无try- catch结构或找不到与之匹配的catch,就依次转到上一层处理。

                        9,如果throw抛出的异常信息找不到与之匹配的catch块,那么系统就会调用一个系统函数terminate,使程序终止运行。


C++允许在声明函数时列出可能抛出的异常类型。例如:double fun(int a,double b)throw (double,int);

表示fun函数只能抛出int,double类型的异常。注意异常声明在函数声明和函数定义时都需要写出。


C++的异常处理机制会在throw语句抛出异常信息被catch捕获时,对有关的局部对象进行析构,析构对象的顺序与构造的顺序相反。

            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值