参见英文答案 > Does a finally block always get executed in Java? 46个
> Java’s return value in try-catch-finally mechanism 4个
如果执行不会导致异常,则控制转到finally块.那么JVM是否会忽略try块中的return语句? .或者如果发生异常,那么控制进入catch块也会忽略返回状态并且控制转到finally块并从最终返回
public class Helper {
public int showException(int a, int b){
try{
int c=a/b;
return c;
} catch(Exception e){
return 0;
} finally{
return 3;
}
}
}
解决方法:
因为无论你是进入try还是catch,每次都会执行block,我认为这就是为什么它最终被调用:)
The finally block always executes when the try block exits. This
ensures that the finally block is executed even if an unexpected
exception occurs.
注意:只有在执行时才会执行
If the JVM exits while the try or catch code is being executed, then
the finally block may not execute. Likewise, if the thread executing
the try or catch code is interrupted or killed, the finally block may
not execute even though the application as a whole continues.
标签:java,exception-handling
来源: https://codeday.me/bug/20190517/1122798.html