黑马程序员技术交流社区

标题: try {}里有return语句,那么其后的finally {}里的语句会被执行么,什么时候被执行? [打印本页]

作者: lishang    时间: 2015-7-26 22:44
标题: try {}里有return语句,那么其后的finally {}里的语句会被执行么,什么时候被执行?
答案是在return之前,但往更细地说,我的答案是在return中间执行,请看下面程序代码的运行结果:
public  class Test {

        /**
         * @param args add by zxx ,Dec 9, 2008
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println(new Test().test());;
        }

        static int test()
        {
                int x = 1;
                try
                {
                        return x;
                }
                finally
                {
                        ++x;
                }
        }
       
}

---------执行结果 ---------
1

运行结果是1,为什么呢?主函数调用子函数并得到结果的过程,好比主函数准备一个空罐子,当子函数要返回结果时,先把结果放在罐子里,然后再将程序逻辑返回到主函数。所谓返回,就是子函数说,我不运行了,你主函数继续运行吧,这没什么结果可言,结果是在说这话之前放进罐子里的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2