サブペアレント例外
- 親クラスが複数の例外をスローする場合、子クラスが親クラスメソッドをオーバーライドすると、親クラスまたは親クラス例外のサブクラスと同じ例外がスローされるか、例外はスローされません。
- 親クラスのメソッドは例外をスローせず、子クラスは親クラスのメソッドをオーバーライドするときに例外をスローできません。現時点では、子クラスは例外を生成し、キャッチおよび処理のみが可能であり、スローを宣言することはできません。
コード例
public class Demo09FuZI {
public void show01()throws NullPointerException,ClassCastException{};
public void show02()throws IndexOutOfBoundsException{};
public void show03()throws IndexOutOfBoundsException{};
public void show04(){};
}
class Zi extends Demo09FuZI{
//1.抛出相同的异常
@Override
public void show01()throws NullPointerException,ClassCastException{};
//2.抛出父类异常的子类
@Override
public void show02() throws ArrayIndexOutOfBoundsException {
}
//3.子类重写方法时,不抛出异常
@Override
public void show03() {
}
//父类方法没有抛出异常,子类重写父类该方法时也不可以抛出异常,此时子类产生该异常,只能捕获处理,不能声明抛出
@Override
public void show04() {
try {
throw new Exception("编译器异常");
} catch (Exception e) {
e.printStackTrace();
}
}
}