gpt4 book ai didi

java - 如何在没有 throws 子句的情况下实现在接口(interface)中定义的方法时添加 throws Exception 子句?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:34:41 24 4
gpt4 key购买 nike

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

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

或者,我根本不应该实现迭代器?

最佳答案

迂腐地说,如果您需要添加已检查的异常,则您没有实现 Iterator.next。 Iterator.next 不抛出已检查的异常,所以基本上 Iterator.next 有约定,用户真正需要考虑的是,没有什么太糟糕的地方会出错(与 File.open 相反,你必须担心 IOExceptions 被抛出)。

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

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

  • 我可以将异常包装在迭代器的运行时异常中吗?有构造函数可以执行此操作(那些具有 Throwable 的构造函数)。这至少会封装您在内部使用的内容并允许您使用 Iterator 接口(interface)

  • 我可以用 Iterable 替换 Iterator 吗?如果是这样,我可以在 Iterable 的创建过程中抛出这些已检查的异常,然后迭代器就不能抛出异常。这仅在元素数量不大的情况下才有效。

关于java - 如何在没有 throws 子句的情况下实现在接口(interface)中定义的方法时添加 throws Exception 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4450138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com