标签:err code logs bsp article tar 超出 重写 运行时
注意:
子类重写父类方法时要抛出与父类一致的异常,或者不抛出异常。
子类重写父类方法所抛出的异常不能超出父类的范畴。
重写方法不能抛出新的受检异常或者比被重写方法更加宽泛的受检异常,可以抛出非受检异常(父类只抛出受检异常情况下)。例如:父类的一个方法抛出了一个受检异常IOException,重写该方法时不能抛出Exception,只能抛出IOException的子类异常,也可以抛出非受检异常。Error和RuntimeException及其子类属于非受检异常(unchecked),其它异常属于受检异常(checked)。
1 class A {
2 public void fun() throws Exception {
3
4 }
5 }
6 class B extends A {
7 public void fun() throws IOException, RuntimeException {
8
9 }
10 }
父类抛出的异常包含所有异常,上面的写法正确。
1 class A {
2 public void fun() throws RuntimeException {
3
4 }
5 }
6 class B extends A {
7 public void fun() throws IOException, RuntimeException {
8
9 }
10 }
子类IOException超出了父类的异常范畴,上面的写法错误。
1 class A {
2 public void fun() throws IOException {
3
4 }
5 }
6 class B extends A {
7 public void fun() throws IOException, RuntimeException, ArithmeticException {
8
9 }
10 }
RuntimeException不属于IO的范畴,超出了父类的异常范畴。RuntimeException和ArithmeticException属于运行时异常,子类重写的方法可以抛出任何运行时异常。所以上面的写法正确。
参考资料
标签:err code logs bsp article tar 超出 重写 运行时
原文地址:http://www.cnblogs.com/WJQ2017/p/7762424.html