Marking the answer says what happens, but I thought I would say why:
I believe this should allow any external handlers to handle the exception, which must be handled before the finally block is executed. (For example, when a debugger is connected, it may try to break at the exception point, which allows you to continue working before the finally block starts working.)
If the finally block was executed in advance, you cannot handle the exception in the debugger.
source share