Java - 可能失败的迭代器

Bob*_*r02 3 java iterator exception

正如标题中所描述的那样,我试图在一些数据上设计迭代器,这可能会在某些地方失败.一个例子是Iterator<DatabaseObject>,在调用next()DB中的下一行并继续读取时.其他示例可能包括使用API​​中的对象处理数据以引发异常.问题是如何在这种情况下做出响应,因为Iterator不允许引发任何异常......我们应该抛出NoSUchElementException并提供有意义的消息吗?

Ted*_*opp 5

您可以抛出未经检查的异常.抛出是有意义的NoSuchElementException,因为事实上,一个错误阻止了它成为这样一个元素.

如果异常将包装任何底层异常,那将是很好的.不幸的是,NoSuchElementException没有一个构造函数需要另一个异常.因此,如果你想传播潜在的原因,你将不得不采取不同的路线,例如抛出RuntimeException:

try {
    ...
} catch (<some exception type> e) {
    throw new RuntimeException("Next element not accessible", e);
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以返回一些保留值(例如null).