Since we catch the InterruptedException, we need to call `Thread.currentThread().interrupt();` so that other codes interested in InterruptedException can be notified. And since an exception happens, I think `hasNext` should return false.