What do you mean by "first"?
The finally
runs before execution leaves the method. When else should it run? It is, after all, part of the method.
But if you have
int x = 1;
try{
return x;
} finally {
x = x + 1;
}
then the method will still return 1. So the return
statement does get executed before the finally
block in a way (to determine the return value).
If the question is why the finally block is executed at all, well, that's what they are for: To "finally" run after the "try" block is done, no matter what.
But in try block, return statement will take the control to main class. In that case how will the control come to finally block?
How? Well, that's just how the language (and runtime) work.
Before control flow is returned to the calling method, the finally block is executed.
It technically even has the option to change the return value (by having its own return
statement), but that is highly discouraged.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…