标准Java中是否存在众所周知的NoSuchElementException检查版本?
我的主要动机是清楚地传达方法行为,因此强制开发人员处理抛出NoSuchElementException的情况。
编辑: 正如答案所示,NoSuchElementException是Exception,一个错误。在我的情况下"找不到对象"情况是有效的行为。因此,考虑到这一点,我使用Optional来提供另一种解决方案。这是传达返回可能性的最直接方式"未找到对象"。
答案 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项(“避免不必要地使用已检查的例外”)。