Because once you catch the exception, execution flow resumes after the try-catch-finally block. That's also why you didn't have to declare your method with 'throws', because you handle the exception inside the method.
You'd only skip that last line if you didn't handle the exception that was thrown, or if you handled it but threw another one inside your catch block.
Originally posted by J Recker: ... I thought that after an exception is thrown, the catch will run, then finally, then it will exit the rest of the code. why does 'after exceptions' print out?
Remember when exception is caught, normal execution will continue. On the other hand, if suppose exception in uncaught, then it will be propagated to the method stack. In that case, after the execution of finally block, control will be returned to the caller and any line outside the try/catch/finally block will not be executed.