java覆盖问题。覆盖父类方法抛出异常问题

重写方法需要抛出与原方法所抛出异常类型一致异常或不抛出异常。子类抛出的异常类型不能比父类抛出的异常类型更宽泛!能帮忙解释下上面两句话吗?另有下面疑问,我在子类中调用父类的... 重写方法需要抛出与原方法所抛出异常类型一致异常或不抛出异常。

子类抛出的异常类型不能比父类抛出的异常类型更宽泛!

能帮忙解释下上面两句话吗?

另有下面疑问,我在子类中调用父类的该方法,抛出父类的异常。但如果我将这个异常catch住,在catch子句中心抛出一个比父类型更宽泛的异常。感觉应该也可以。

还有我查到说抛出runtime异常没有问题。运行时异常虽然可以不用捕获。但如果其本身已经超出了父类的范围呢?

忘高手讲解。
明白后必有重谢!!
展开
 我来答
daay1986
推荐于2018-03-19 · TA获得超过6018个赞
知道大有可为答主
回答量:2208
采纳率:0%
帮助的人:1471万
展开全部
重写方法需要抛出与原方法所抛出异常类型一致异常或不抛出异常。
一个方法是否显示抛出异常对于重写是没用影响的,只是对调用者有影响,对于使用者来说如果你抛出的是一个未报告的异凳梁常那他就要必须使用trycatch来捕获异常了。而且你要注意如果说你显示抛出一个UnsupportedOperationException之类的异常,调用该方法可以不用自己来亲自捕获异常的,可以直接再往上次抛。RuntimeException异常类以及其子类都属于此范畴,调用者可以不用自己去捕获异常的!

子类抛出的异常类型不能比父类抛出的异常类型更宽泛!
对于这句话你还少了一个条件应该是子类重写父类方法不能抛出比父类更宽的异常类型的把。其实理解这个很简单,比如说宪法规定骂人只承担民事责任,到了刑法里就不能说直接枪毙了,这就是一个约束能力的问题,子类行为不能超出父类约束范畴。否者就容易乱套。就像父类的某方法公有的,子类就不能重写改成私有的了。这就是一个约束力的问题。

还有我查枣扰运到说抛出runtime异常没有问题。运行时异常虽然可以不用捕获。但如果其本身已经超出了父类的范围呢?
这个还是拿宪法民事责任来说把,宪法说骂人教育一下就可以了,到了省里说道个歉就可以了,但是到了市里了,不光道歉还要写检讨。这些都是可以的,因为他们本身就有处理这个事件的能力。子类方法他可以不管RuntimeException之类的异常,这是前提,就算你父类方法声明的异常更小,我可以李纯行使我抛出RuntimeException异常的权利,这个是我的本身就有的权利。这就像是地方政策和国家政策相抵触的时候,老百姓可以直接往国家报告,可以不经过地方政府一样,因为老百姓有直接上报国家的权利。子类有RuntimeException异常不报告的权利,就算你父类规定个更低的异常,我一样可以上报,只要你比RuntimeException低级就可以。
这就好比,卖国贼选择了卖国,他们的子女就不能爱国了一样!
千锋教育
2016-01-04 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
  1. 有异常抛出的代码一般放入 try...catch 以进行异常捕获,根据情况进行分析。还可以以多个catch进行捕获,进而可以已不同情况进行处哗明滑理。

  2. 如果已知异常类型,乱腊可以用对应的异常进行捕获槐铅,如果简单点话,直接用Exception进行。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lyw985
2009-10-19 · TA获得超过1401个赞
知道小有建树答主
回答量:1560
采纳率:100%
帮助的人:355万
展开全部
重写方法需要抛出与原方法所抛出异常类型一致异常或不抛出异常。

这句话的意思我想不用解释了。

至于,子类抛出的异常类型不能比父类抛出的异常类型更宽泛。

这样基姿想,为什么需要抛出异常?是因为处理不了或者不应该由该方法处理,所以外抛,编译器认为,能产生的搏毁绝异常全部被抛出了,就不报错了。但是如果父类允许抛出数组下标越界异常,子类允许抛出了RuntimeException,要是子类抛出的是空指针异常,那么父类不能外抛,因余哪为外抛的一场类型不符合。你明白了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gjq523
2009-10-19 · TA获得超过199个赞
知道答主
回答量:125
采纳率:0%
帮助的人:50万
展开全部
子类抛出的异常类型不能比父类抛出的异常类型更宽泛!
是说覆盖父类方法抛出的异常只能是以下情况(比如父类抛出IOEception异常):
1.要和父类方法抛出知悉悉的异常一致,抛出IOEception异常
2.抛出的异常搭乎是父类抛出异常的子类,陆毕如EOFException异常
3.不抛出异常。
4.java.lang.RuntimeException异常或者其子孙类异常

在catch子句中心抛出一个比父类型更宽泛的异常。可以。

runtime异常,比如0除以0会抛出ArithmeticException的异常就属于runtime异常,这种异常可以不捕获、可以不抛出。他不是IOEception的子孙类异常
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
93062670
2009-10-19 · 超过23用户采纳过TA的回答
知道答主
回答量:231
采纳率:100%
帮助的人:75.6万
展开全部
比如 :子类的异常孝指必须在父类的异常之内
简单的说就是 父类的异常包含了子类的

如果父类抛出的是Exception
那么子类随便什么异常就可段猜以...因为任何握慎型异常都继承于Exception
子类的异常要也要是父类的异常的子类 不知道怎么说你懂了不
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式