1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > try { } catch{ } finally{ } 执行顺序总结

try { } catch{ } finally{ } 执行顺序总结

时间:2021-01-28 12:00:50

相关推荐

try { } catch{ } finally{ } 执行顺序总结

publicclass TestTry {

publicstaticvoid main(String[] args) {

TestTry t = new TestTry();

System.out.println(t.getString() + " ---- return执行结束!");

}

public String getString() {

String testString = "abc";

try {

System.out.println("执行try!");

//int a = 9 / 0;

return testString;

} catch (Exception e) {

System.out.println("执行catch!");

return testString;

} finally {

System.out.println("执行finally!");

}

}

}

执行结果:

[1]执行try!

[2]执行finally!

[3]abc ---- return执行结束!

-------------------------------------------------------------------

在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。

在转去之前,try中先把要返回的结果存放到不同于a的局部变量中去,执行完finally之后,在从中取出返回结果,

因此,即使finally中对变量a进行了改变,但是不会影响返回结果。验证实例:

publicclass Test11 {

publicstaticvoid main(String[] args) {

int b = f();

System.out.println(b);

}

privatestaticint f() {

int a = 10;

try {

a += 10;

System.out.println("try");

//int e = 3 / 0;

a += 10;

return a;

} catch (Exception ex) {

System.out.println("catch");

return a;

} finally {

System.out.println("finally");

a += 100;

}

}

}

执行结果:

[1] try

[2] finally

[3] 30

结论:

1.不管出没出现异常,finally块中的语句都会执行;

2.当try或catch块中有return语句时,finally块中的语句仍会执行;

3.finally块中的语句是在return语句执行之后才执行的,即函数返回值是在finally块中语句执行前确定的;

4.finally块中不主张包含return语句,如果加了return在finally块中,将返回这个值。

总结:finally在return前执行,在finally的操作,不会改变已经确定的return的值。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。