读书人

C++中throw并非一定要在try块中才有效

发布时间: 2014-01-01 18:12:08 作者: rapoo

C++中throw并非一定要在try块中才有效
不是说被检测部分必须被放到try块中才起作用么? 下面这段程序



这说明throw发出的信息还是被catch了啊!有点迷惑
[解决办法]
异常传播,会穿透函数,直接传播,函数是不能限制异常传播的。
如果一个函数,调用另一个函数,
被调函数 放在 try块内部调用则catch 块可以捕获,被调函数抛出的异常,

只要被调函数抛出的异常,有对应的catch 块可以接收,并且此前没有被捕获
而对被调函数的调用,是可以到达的。

即:和try块匹配的,任何一个catch块 ,catch 的异常类型和抛出的异常兼容
比如 catch 的异常类型如下
1)被抛出异常类型指针,
2)被抛出类型引用,
2)被抛出类型对象,
4)被抛出异常基类,
即可捕获异常。

读书人网 >C++

热点推荐