如标题中所述,我正在尝试针对某些数据设计一个迭代器,这可能会在某处失败。一个例子是 Iterator<DatabaseObject>
那将在调用 next()
时从数据库中读取下一行并继续。其他示例可能包括使用引发异常的 API 中的对象处理数据。问题是在这种情况下如何响应,因为 Iterator 不允许引发任何异常......我们应该抛出 NoSUchElementException
吗?并在那里提供有意义的信息?
最佳答案
您可以抛出未经检查的异常。抛出 NoSuchElementException
是有意义的,因为事实上,一个错误阻止了这样一个元素。
如果异常能包装任何底层异常就好了。不幸的是,NoSuchElementException
没有接受另一个异常的构造函数。因此,如果您想向上传播根本原因,则必须采用不同的方法,例如抛出 RuntimeException
:
try {
...
} catch (<some exception type> e) {
throw new RuntimeException("Next element not accessible", e);
}
或者,您可以返回一些保留值(例如 null
)。
关于Java - 可能会失败的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13570561/