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

来源:互联网 发布:万网幕布和阿里云幕布 编辑:程序博客网 时间:2024/04/30 07:32

前言:今天看到系统自定义的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时使用的这个类的辈分(级别)有多高,

而是看这个类和抛出的异常之间是否有直接继承关系

原创粉丝点击