The answer in K&B is hello throwit caught finally after
My doubt is how come "after" is printed, when an exception occurs doesn't the code exits the VM after the finally or is it if the exception is caught it executes the code to the bottom of the method stack call.
That's right. If the exception is caught, program will follow instructions in exception block. If there is no catch exception block, the exception will be thrown back to JVM and program will be aborted with error messages.