when you catch an IE you have to restore the interrupted state of the Thread!
Add this before the throws statement:

    Thread.currentThread().interrupt();