5-1,老师您好,我有一个关于throws的问题。

5-1,老师您好,我有一个关于throws的问题。

在5-1的代码中,如果test方法throws出的是Exception类,为什么在main 方法中可以使用catch(InputMismatchException e)等来catch它的子类?我认为在test方法执行的过程中,即使明确出现了InputMismatchException,也应该被强制转换为Exception后才throws给方法调用处才对,因为我们在声明方法的时候就是这么写的。谢谢老师。

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

因为有多种异常类型,我们需要明确知道异常的类型才能做相应的处理。祝学习愉快~

  • 朱裕炜 提问者 #1
    谢谢老师。老师您误会了,我的问题是我明明抛出的是Exception类,为什么可以被catch(InputMismatchException e)捕获?后者应当是前者的子类。
    2018-06-24 20:50:47
  • irista23 回复 提问者 朱裕炜 #2
    如果你在调用的时候分类处理了InputMismatchException异常,当出现此类异常时就会进入到这个异常,如果没有标明处理InputMismatchException,就会直接进入Exception里了,Exception是最大范围的异常,如果你细分类,程序也会根据你的分类需要走不同的异常分支,如果你没有分类处理,全部进入Exception里处理了。
    2018-06-25 09:53:29
  • 朱裕炜 提问者 回复 irista23 #3
    好的,谢谢老师。
    2018-06-25 10:39:32
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师