【发布时间】:2015-01-22 22:16:44
【问题描述】:
try 时使用 finally 组合,在 try 中如果有 return 语句,为什么会先执行 finally 块?
class Palindrome
{
public static void main(String args[])
{
System.out.println(Palindrome.test());
}
public static int test()
{
try {
//return 0;
return 100;
}
finally {
System.out.println("finally trumps return.");
}
}
}
在上面的代码中请告诉我执行的流程。我知道 finally 将在 try 块之后强制执行。但是在 try 块中,return 语句会将控制权交给主类。那样的话,控件怎么会最终阻塞呢?
【问题讨论】:
-
您可以通过更少的努力手动验证它
-
@JigarJoshi:你如何验证“为什么”的问题?
-
如果你进入 try 块,finally 块总是会被执行。这是规则。
-
如果您想知道如何,请转储字节码。
标签: java return try-catch finally