在实现接口中定义的没有 throws 子句的方法时,如何添加 throws Exception 子句?

2023-12-28

我需要一个类来在集合中导航,然后我实现了 Iterator 接口。 但问题是,我的next()方法的实现需要抛出异常,因为集合成员需要动态生成,生成过程中可能会发生异常。

next() 抛出的唯一异常是 NoSuchElementException ,这意味着集合中不再有元素,这不能满足我的需要。

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


迂腐地说,如果您需要添加受检查的异常,您就不会实现 Iterator.next。 Iterator.next 不会抛出已检查的异常,因此基本上 Iterator.next 的约定是,用户真正需要考虑的是,没有什么太糟糕的事情会出错(与 File.open 不同,在 File.open 中,您必须担心抛出 IOExceptions)。

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

  • 我可以删除已检查的异常并将其替换为未检查的异常吗?这将是我的第一次尝试,因为检查的异常每次出现都会引起相当多的骚动。这可以轻松解决您的解决方案,因为这样您的 next() 就不会再抛出已检查的异常。如果它是第三方库,我可以包装它(无论如何,这将是一个好主意)并将这些异常转换为包装器中的检查异常?

  • 我可以将异常包装在迭代器的运行时异常中吗?有一些构造函数可以做到这一点(那些带有 Throwable 的构造函数)。这至少会封装您内部使用的内容并允许您使用迭代器接口

  • 我可以用 Iterable 替换我的 Iterator 吗?如果是这样,我可以在创建 Iterable 期间抛出这些已检查的异常,然后迭代器就不能抛出异常。仅当元素数量不多时这才有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在实现接口中定义的没有 throws 子句的方法时,如何添加 throws Exception 子句? 的相关文章

随机推荐