我知道即使代码抛出异常或者它成功完成,finally block 也会执行,现在我怀疑的是这段代码
returns 40
这是显而易见的,但现在如果我
comment return 40;
it returns 10
任何人都可以帮助我理解 JVM 如何返回 10 为什么它不提示函数应该返回一个值。
public class ExceptionTest {
public static void main(String[] args) {
int i= returnSomething();
System.out.println(i);
}
private static int returnSomething() {
try{
System.out.println("try");
return 10;
}
catch(Exception e)
{
return 20;
}
finally
{
System.out.println("finally ");
return 40;
}
}
}
最佳答案
就在执行 try
block 中的 return
之前,控制权被转移到 finally
block 。执行finally
block 时,该函数将返回除非您在finally block 本身中有一个return
。
因此,当您在 finally block 中有 return
时,该函数返回 40
;当您在 try
block 中返回值时,该函数返回 try
block 中的值。不要在finally block 中返回。
不建议在finally
block 中返回。
关于java - 这段代码在java内部处理中是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19533023/