码迷,mamicode.com
首页 > 编程语言 > 详细

Java 异常 重写方法时抛出异常

时间:2017-10-31 17:40:30      阅读:403      评论:0      收藏:0      [点我收藏+]

标签: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属于运行时异常,子类重写的方法可以抛出任何运行时异常。所以上面的写法正确。

 

  参考资料

  在继承中重写方法时抛出异常的问题

Java 异常 重写方法时抛出异常

标签:err   code   logs   bsp   article   tar   超出   重写   运行时   

原文地址:http://www.cnblogs.com/WJQ2017/p/7762424.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!