Java - 可能会失败的迭代器

标签 java exception iterator

如标题中所述,我正在尝试针对某些数据设计一个迭代器,这可能会在某处失败。一个例子是 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/

相关文章:

JavaScript 尝试并捕获

android - cursor.getString() 抛出的 CursorIndexOutOfBoundsException

c++ - 为什么我需要一个前向迭代器来实现我定制的 std::search

java - 无法找到或加载主类 Java,但 javac 可以工作

java - 如何从字符串中删除引号中的子字符串? (没有正则表达式)

java - 如何知道哪个变量是 try block 中的罪魁祸首?

c++ - 为什么 std::list 迭代器没有 operator+?

c++ - 遍历成对的 vector 并访问第一个和第二个元素

java - 如何将字符串放入二维数组中

java - Android 中的 LinkedHashSet<ItemCategory> 和 Spinner