本帖最后由 xuehuayous 于 2014-4-8 08:51 编辑
先结合一个小例子分析一下吧
- package cn.itheima;
- public class tryFinallyDemo {
- public static void main(String[] args) {
- System.out.println(test());//step1:调用test()方法
- //step7:将返回的i的值(i=5)打印在控制台
- }
- public static int test() {
- int i = 2; //step2:创建i变量并赋值2;
- try {
- i+=3; //step3:i自加3;即现在i=5;
- return i; //step4:执行return语句,将i的值保存在缓冲区;
- //step6:将保存在缓冲区的i值返回;
- } finally {
- i+=3; //step5:i自加3;即现在i=8;
- }
- }
- }
复制代码 总结:
try 和finally的执行顺序问题:
程序会先执行try的语句,如果try遇到exception或者error后,执行catch中的语句,最后执行finally中的语句
程序在try中遇到return语句后,会将return的结果存在一个缓存中,但是并不会直接就输出,而是先储存起来,等到finally执行完毕后才输出return结果,接入finally中也有return语句,那么就会覆盖掉try中的return值
希望对你有帮助!
|