是否有版本的NoSuchElementException

时间:2018-04-12 14:19:05

标签: java

标准Java中是否存在众所周知的NoSuchElementException检查版本?

我的主要动机是清楚地传达方法行为,因此强制开发人员处理抛出NoSuchElementException的情况。

编辑: 正如答案所示,NoSuchElementException是Exception,一个错误。在我的情况下"找不到对象"情况是有效的行为。因此,考虑到这一点,我使用Optional来提供另一种解决方案。这是传达返回可能性的最直接方式"未找到对象"。

2 个答案:

答案 0 :(得分:0)

此例外没有标准的直接检查等效项。

  

我的主要动机是清楚地传达方法行为......

真正的问题是什么"行为"你试图传达。

  • 如果您想传达NoSuchElementException的完整含义,那么根据定义并不存在。完整的含义包括可能抛出异常的上下文,以及任何"替代"抛出NoSuchElementException的各种标准类不会引发异常。

  • 但如果你只想要一个大致相同的含义,那么有一些可能的候选人:见Is there a standard java exception class that means "The object was not found"?。或者您可以简单地定义自定义(已检查)例外。

答案 1 :(得分:0)

我认为没有。

那就是说,在抛出一个检查过的异常之前你应该三思而后行。 已检查异常的标准用法是发出超出呼叫者控制范围的异常情况,例如:

  • 尝试打开不存在的文件
  • 尝试使用失败/丢弃的网络连接

理由是如果调用者可以防止异常情况,则不应强制它处理

您可以在经典Effective Java book(第3版刚出来,顺便说一句)中找到更多信息,特别是第71项(“避免不必要地使用已检查的例外”)。