You have a very subtle recursive call in your exception handler. In Java every time you call a method you get a new local scope and just because the local variable names happen to line up does not...