黑马程序员技术交流社区

标题: 写一下自己对try return finally的认识 [打印本页]

作者: 秦大忠    时间: 2013-8-14 10:07
标题: 写一下自己对try return finally的认识
先来一段代码:
public class Test6
{
        public static void main(String[] args)
        {
                Test6 t = new Test6();
                System.out.println(t.test());
        }
        int test1()
        {
                System.out.println("我是try中的return,我执行了!");
                return 1;
        }
        int test2()
        {
                System.out.println("我是finally中的return,我执行了");
                return 2;
        }
    int test()
        {
               
                try
                {
                        return test1();
                }
                finally
                {
                        return test2();
                }
        }
}

运行结果是:我是try中的return,我执行了!
我是finally中的return,我执行了
2

认识:
如果try中的return先执行了,那么它必然先调用test1()这个方法,test1()中的return
应该也是执行了,但是却没有立刻返回,而是主函数继续执行finally{},当遇到finally中的
return时,它先返回了一个2,函数就结束了,所以try中的return返回的1还在栈当中,
没有返回

我们在写一个finally中没有返回值的代码:
ppublic class Test6
{
        public static void main(String[] args)
        {
        Test6 t = new Test6();
        System.out.println(t.test());
        }
        int test()
        {
                int x = 1;
                try
                {
                        return x;
                }
                finally
                {
                        x=x+1;
                }
        }
       
}
输出结果是:1
这个结果可以看出try中的return是在finally先执行的


作者: 神之梦    时间: 2013-8-14 20:43
嗯,不错,可以把代码放在<>这个东东里面




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