您的位置:首页 > 其它

异常的继承关系与捕获关系(只有直系的继承关系时,下面的类才能被捕获,和辈分无关!!)

2011-12-09 21:42 344 查看
前言:今天看到系统自定义的SystemException 没有捕获 StringIndexOutOfBoundException。

SystemException 继承了 RuntimeException ;

StringIndexOutOfBoundException 继承了 IndexOutOfBoundException,

IndexOutOfBoundException 继承了 RuntimeException ;

哎~基础的东西都快忘了!!!

现象描述:

类A 继承RuntimeException

B 继承RuntimeException

C 继承B

try{

throw c;

} catch(A ex){

// c不能被捕获!!!

}

问:抛出C,能不能被A捕获。

回答:不能。

补充说明,就是算是A继承的是Exception,也不能捕获c

总结:

被抛出的异常能否捕获,不看catch时使用的这个类的辈分(级别)有多高,

而是看这个类和抛出的异常之间是否有直接继承关系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: