This is the code: It will compile but will throw AnotherException when run.
Explanation m2() throws NewException, which is not caught anywhere. But before exiting out of the main method, finally must be executed. Since finally throw AnotherException (due to a call to m3() ), the NewException thrown in the try block ( due to call to m2() ) is ignored and AnotherException is thrown from the main method.
I thought the exception has to be caught; m2() throws NewException, which is not caught anywhere. I would kindly ask for a clarification.