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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王维波 黑马帝   /  2011-11-4 21:58  /  2013 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么覆盖的方法不能声明异常?


该贴已经同步到 保持常态0616的微博

3 个回复

倒序浏览
重写方法需要抛出与原方法所抛出异常类型一致异常或不抛出异常。
  一个方法是否显示抛出异常对于重写是没用影响的,只是对调用者有影响,对于使用者来说如果你抛出的是一个未报告的异常那他就要必须使用trycatch来捕获异常了。而且你要注意如果说你显示抛出一个UnsupportedOperationException之类的异常,调用该方法可以不用自己来亲自捕获异常的,可以直接再往上次抛。RuntimeException异常类以及其子类都属于此范畴,调用者可以不用自己去捕获异常的!

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
方法的覆盖就涉及到了重写父类的方法,子类捕获异常只能是继承父类的异常,不能抛出新的异常,范围只能小不能多于父类异常,重载就不需要考虑了
回复 使用道具 举报
覆盖方法是实现多态的关键,考虑一下多态的场合,调用方法的时候如果需要捕获异常,只能捕获父类中方法声明可能抛出的异常,而如果允许子类抛出新的异常,这时候就无法处理了。{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马