I don't believe the type of exception matters. If a return is executed within a finally block, it will nullify all exception (including pending one). After control is retuned to the calling method, execution will continue as normal.
The program below will run to normal completion and prints "Normal termination".
However, if line 20 is removed or commented out, it will terminate with the following:
Exception in thread "main"