A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© asinzuo 中级黑马   /  2015-8-18 07:37  /  3658 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类。

如果父类抛出多个异常,那么覆盖方法必须抛出那些异常的一个子集,不能抛出新的异常。---即不能抛出异常的子类?

最佳答案

查看完整内容

”如果父类抛出多个异常,那么覆盖方法必须抛出那些异常的一个子集,不能抛出新的异常。“ 假设 父类抛出两个异常类 IOException 和 IndexOutofBoundExcetiop,则这两个类组成就是一个集合 A{ IOException , IndexOutofBoundExcetiop } 那么集合A的子集 有 集合 B{ IOException } C{ IndexOutofBoundExcetiop } 集合D{ IOException , IndexOutofBoundExcetiop }(A本身) 所以覆盖方法只能抛出哪些异常的子集,即要么 抛 IOExcep ...

15 个回复

倒序浏览
”如果父类抛出多个异常,那么覆盖方法必须抛出那些异常的一个子集,不能抛出新的异常。“
假设 父类抛出两个异常类  IOException 和 IndexOutofBoundExcetiop,则这两个类组成就是一个集合
A{  IOException , IndexOutofBoundExcetiop }
那么集合A的子集 有 集合 B{ IOException }  C{ IndexOutofBoundExcetiop }  集合D{  IOException , IndexOutofBoundExcetiop }(A本身)
所以覆盖方法只能抛出哪些异常的子集,即要么 抛 IOException;  要么抛 IndexOutofBoundExcetiop  ;要么 IOException 和 IndexOutofBoundExcetiop
不能抛新异常,比如不能抛 FileNotFoundException ,因为它不是 父类抛出异常的子集。
“异常的子类”是可以抛的,这个就先记住嘛   比如父类说 我感冒了  , 然后子类进行检查发现,没错,是感冒了,但是我发现这个是  病毒引起的感冒 (感冒分类下的一个子类) ,所以抛出 病毒引起的感冒 ,这种抛出异常的子类的情况  是可以接受的,因为系统还是能确定异常就是感冒;但是你如果给抛出一个不是感冒范畴的异常  比如心脏病,这个是不允许的,因为父类只说了 会 感冒,你给它包其它类型的病  它不识别,但是只要报的是属于感冒类的就可以
回复 使用道具 举报
1、如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。
2、如果父类方法抛出多个异常,那么子类再覆盖该方法时,只能抛出父类异常的子集。
(也就是父类如果抛多个异常,那么我们不能直接抛Exception异常。)
(如果抛一个异常的时候,是可以抛父类异常的)
3、如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。
子类方法发生了异常,就必须要进行try处理,绝对不能抛。
4、如果在子类的覆盖方法确实需要抛出非父类的异常或者该异常的子类,则必须在内部解决。
回复 使用道具 举报
楼上解释的很正确!
回复 使用道具 举报
可以抛出新的异常,但是抛的顺序要从低到高
回复 使用道具 举报
这样的规定应该是从多态德角度考虑德,如果传入德是一个父类的引用指向子类德对象德話,那么超出父类能抛出的异常就无法处理了。
回复 使用道具 举报

1、如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类
回复 使用道具 举报
长知识了.......
回复 使用道具 举报
你可以抛出这些异常的父类,也可以try。。。catch。。。
回复 使用道具 举报
当前处理不了的抛到上一层
回复 使用道具 举报
当前不能很好处理的,抛到上一层去,或是到虚拟机进行处理
回复 使用道具 举报
子类的覆盖方法的异常处理是在超类中进行
回复 使用道具 举报
wyd1 中级黑马 2015-8-22 22:59:43
13#
居然还没有彼岸准答案错线?
回复 使用道具 举报
又学习......................了..................
回复 使用道具 举报
asinzuo 来自手机 中级黑马 2015-8-24 19:55:19
15#
我就是想问子集是否包括子类
回复 使用道具 举报
asinzuo 来自手机 中级黑马 2015-8-24 20:05:18
16#
总结就是,可以抛出子集以及子集们的子类。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马