黑马程序员技术交流社区
标题:
异常在子父类中的表现问题
[打印本页]
作者:
渴望学习
时间:
2014-7-21 17:48
标题:
异常在子父类中的表现问题
如果父类抛出了多个异常,那么子类在覆盖时只能抛出父类异常的子集。
子集指的是什么? 是不是每个异常的子类
作者:
燿陚√揚葳
时间:
2014-7-21 18:15
是的,可以抛出该异常的子类
异常在子父类覆盖中的体现
1.子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类
2.如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集
3.如果父类或者接口的方法中没有抛出异常,那么子类在覆盖方法时也不可以抛出异常
如果子类方法发生了异常,就必须要进行try处理,绝对不能抛
如下面的代码:
class AException extends Exception{
}
class BException extends AException{
}
class CException extends Exception{
}
class DException extends CException{
}
class EException extends Exception{
}
class Fu{
public void show()throws AException,CException{}
}
class Zi extends Fu{
/*子类可以抛出AException或者BException,DException,如果AException有其他的子类那么
不能抛出EException,也就是说父类抛出的异常或者该异常的子类都可以,父类有多个异常,子类可以抛出
那些异常的子类,就是子集*/
public void show()throws AException,BException,DException{}
}
public class ExceptionDemo {
public static void main(String[] args) throws Exception{
}
}
复制代码
作者:
star5603
时间:
2014-7-21 19:18
子类只能抛出父类异常或者异常的子集。如果父类没有抛,那子类绝对不能抛,只能catch。
还有,异常的catch顺序。一个异常的子类异常要catch在前面,该异常在catch在后面。就像RuntimeException的catch要在Exception的catch前面,否则会编译失败。
作者:
渴望学习
时间:
2014-7-22 10:13
燿陚√揚葳 发表于 2014-7-21 18:15
是的,可以抛出该异常的子类
异常在子父类覆盖中的体现
1.子类在覆盖父类时,如果父类的方法抛出异常,那么 ...
感谢!!!!!
作者:
Adjin
时间:
2014-7-22 12:24
意思就是假如父类抛了10个异常,那么子类出现异常,只能抛这10个异常中的异常,不能抛这10个之外的了
作者:
掌柜的--刘饮
时间:
2014-7-22 13:15
异常啊,还得回去补补
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2