加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何在没有throws子句的接口中实现定义的方法时添加thro

发布时间:2020-12-15 08:36:59 所属栏目:Java 来源:网络整理
导读:我需要一个类来浏览集合,然后我实现了Iterator接口. 但问题是,我的next()方法的实现需要抛出异常,因为需要动态生成集合成员,并且在生成过程中可能会发生异常. next()抛出的唯一异常是NoSuchElementException,这意味着集合中没有更多元素,这不符合我的需要.
我需要一个类来浏览集合,然后我实现了Iterator接口.
但问题是,我的next()方法的实现需要抛出异常,因为需要动态生成集合成员,并且在生成过程中可能会发生异常.

next()抛出的唯一异常是NoSuchElementException,这意味着集合中没有更多元素,这不符合我的需要.

或者,我根本不应该实现Iterator?

解决方法

要迂腐,如果需要添加已检查的异常,则不会实现Iterator.next. Iterator.next没有抛出任何检查异常,所以基本上Iterator.next有一个合同,没有什么太糟糕可能会出错,用户真的需要考虑(反对,比如File.open,你必须担心IOExceptions被抛出).

鉴于此,我将按以下顺序考虑以下选项:

>我可以删除已检查的例外并将其替换为未经检查的例外吗?这将是我的第一次尝试,因为经过检查的异常会在每次出现时引起一些激动.这很容易解决您的解决方案,因为您的next()不再抛出已检查的异常.如果它是第三方库,我可以将其包装(无论如何这都是一个好主意)并将这些异常转换为包装器中的chcked异常?>我可以在迭代器中将异常包装在运行时异常中吗?有一些构造函数可以执行此操作(具有Throwable的构造函数).这至少会封装您在内部使用的内容,并允许您使用Iterator接口>我可以用Iterable替换Iterator吗?如果是这样,我可以在创建Iterable期间抛出这些已检查的异常,然后迭代器不会抛出异常.这仅在元素数量不大时才有效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读