If you run the code below it actually executes the finally after every call to the goto:
int i = 0; Found: i++; try { throw new Exc
That's by design. In the exception handler you can take some exception-specific action. In the finally block you should do resource cleanup - that's why the finally block is always executed no matter what the exception handling code is.