实现java.lang.Iterator时如何处理异常
java.lang.Iterator
接口有 3 种方法:、 和 。为了实现只读迭代器,您必须为其中 2 个提供实现:和 。hasNext
next
remove
hasNext
next
我的问题是这些方法不声明任何异常。因此,如果我在迭代进程中的代码声明异常,则必须将迭代代码包含在 try/catch 块中。
我目前的政策是重新推翻包含在.但这存在问题,因为选中的异常丢失,并且客户端代码不再能够显式捕获这些异常。RuntimeException
如何在迭代器类中解决此限制?
为清楚起见,下面是一个示例代码:
class MyIterator implements Iterator
{
@Override
public boolean hasNext()
{
try
{
return implementation.testForNext();
}
catch ( SomethingBadException e )
{
throw new RuntimeException(e);
}
}
@Override
public boolean next()
{
try
{
return implementation.getNext();
}
catch ( SomethingBadException e )
{
throw new RuntimeException(e);
}
}
...
}