What to do of exceptions when implementing java.lang.Iterator
Posted
by Vincent Robert
on Stack Overflow
See other posts from Stack Overflow
or by Vincent Robert
Published on 2010-02-05T08:07:15Z
Indexed on
2010/03/23
10:23 UTC
Read the original article
Hit count: 344
The java.lang.Iterator
interface has 3 methods: hasNext
, next
and remove
. In order to implement a read-only iterator, you have to provide an implementation for 2 of those: hasNext
and next
.
My problem is that these methods does not declare any exceptions. So if my code inside the iteration process declares exceptions, I must enclose my iteration code inside a try/catch block.
My current policy has been to rethrow the exception enclosed in a RuntimeException
. But this has issues because the checked exceptions are lost and the client code no longer can catch those exceptions explicitly.
How can I work around this limitation in the Iterator class?
Here is a sample code for clarity:
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);
}
}
...
}
© Stack Overflow or respective owner