Should iterator.hasNext() throw an exception or just when next() is called?

The Javadoc for hasNext suggests it will never throw an Exception so I think that we should only throw from Iterator.next().