尼玛 上网查半天 没看懂,结果搜下视频 一下就看懂了。
1、当子类覆盖父类的方法时,如果父类的方法抛出了异常,那么子类的方法要么不抛出异常要么抛出父类异常或者该异常的子 类,不能抛出其他异常。(原因:编译时看父类,运行时看子类)
public class ExceptionDemo{
public static void main(String[] args){
Fu f = new Zi();
f.function();
}
}
class Fu{
public void function()throws RuntimeException{
}
}
class Zi extends Fu{
public void function()throws Exception{//不可抛出比父类大的异常
}
}
throws Exception{//不可抛出比父类大的异常
}
}
2、如果抛出了多个异常,那么子类在覆盖时只能抛出父类的异常的子集。
3、如果父类或者接口中的方法没有抛出过异常,那么子类是不可以抛出异常的,如果子类的覆盖的方法中出现了异常,只能try不能throws。
4、如果这个异常子类无法处理,已经影响了子类的方法的具体运算,这时可以在子类的方法中,通过throw抛出RuntimeException异常或者其子类,这样,子类的方法上是不需要throws声明的。