• try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?


    根据java规范:在try-catch-finally中,如果try-finally或者catch-finally中都有return,则两个return语句都执行并且最终 
    返回到调用者那里的是finally中return的值;而如果finally中没有return,则理所当然的返回的是try或者catch中return的值,但是 
    finally中的代码是必须要执行的,而且是在return前执行,除非碰到exit()。

    以下例子证明了上述说法:

    public  class Testfinal {

        public static void main(String[] args) {

           // TODO Auto-generated method stub

          // System.out.println( new  Test().test() );;
           System.out.println(new Testfinal().test());
        }

     

        int test()

        {

           try

           {

               return func1();

           }

           finally

           {

               return func2();

           }

        }

        

        int func1()

        {

           System.out.println("func1");

           return 1;

        }

        int func2()

        {

           System.out.println("func2");

           return 2;

        }   

    }
    运行结果:

  • 相关阅读:
    xml 创建 和 处理 及其修改
    shutil模块(高级的文件copy)
    shelve模块使用说明
    random内置模块
    time 时间内置模块3种形态的转化
    python模块说明
    Java控制并发线程数的Semaphore
    Java并发测试
    JAVA 模拟瞬间高并发
    java并发--流量控制demo
  • 原文地址:https://www.cnblogs.com/Rosefxd/p/3103763.html
Copyright © 2020-2023  润新知