finally
总是最后执行,所以语句x = 3
应该最后执行。但是,运行此代码时,返回的值为 2。
Why?
class Test {
public static void main (String[] args) {
System.out.println(fina());
}
public static int fina()
{
int x = 0;
try {
x = 1;
int a = 10/0;
}
catch (Exception e)
{
x = 2;
return x;
}
finally
{
x = 3;
}
return x;
}
}
那是因为finally
块在之后执行catch
条款。在你的里面catch
你回来了x
,此时它的值为 2,该值作为返回值写入堆栈。一次finally
覆盖的值x
对于 3,返回值已设置为 2。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)