题目:try{}里有一个return 语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候执行,在return前还是return后?
多谢各位!

解决方案 »

  1.   

    额,会执行 ,在return前执行
      

  2.   

    无论如何,Finally{}都会被执行,神奇吧
    当然是在return前了,不然不就不执行了吗
    主要是来接分的,要记得把分给我啊
      

  3.   

    楼主把产生疑问的这段代码执行一下就知道了,加几个控制台输出。
    finally里的代码在try里出不出异常的情况下都会执行,并且在return前。
      

  4.   

    会执行,在return前
    貌似是个笔试题。
      

  5.   

    异常处理的运行过程:
    (1) finally语句唯一不被执行的情况是先执行用于终止程序的System.exit()方法。java.lang.System类的静态方法
    exit()用于终止当前的java虚拟机进程,java虚拟机所执行的java程序也随之终止
    (2) return语句用于退出本方法。在执行try或catch中的return语句时,假如有finally代码块,会先执行finally代码块。
    (3) finally代码块虽然在return语句之前被执行,但finally代码块不能用重新给变量赋值的方式
    来改变return语句的返回值
    (4) 建议不要在finally代码块中使用return语句,因为它会导致两种潜在的错误:
    第一种错误是覆盖try或者catch代码块中的return语句
    第二种错误时丢失异常
      

  6.   

    好像把return换成system.exit(int)的话,finally就不会被执行了。
      

  7.   

    finally 里面的代码不管怎么样都是会被执行的。 
    Java codepublic static void main(String[] args)
        {
            System.out.println(test());
        }
        public static int test()
        {
            try
            {            
                System.out.println(2/1);
                return 0;
            } catch (Exception e)
            {
                e.printStackTrace();
            }finally
            {
                System.out.println("2/0");
            }
            return 0;
        }
    结果:
    2
    2/0
    0先执行 try里面的输出 
    然后执行 finally里面的输出 
    最后才返回的
      

  8.   

    楼主的表达有点歧义。finally代码块如果在return语句前都会被执行。反之如果执行了return语句,就不会执行finally代码块
      

  9.   

    如果 有 System.exist() 就不会执行finally
      

  10.   

    一般废材,先自己测试再说不行吗?误人子弟~!
    哦~~!非常赞同6L的说话up一下~
      

  11.   

    finally 里面的代码是一定会执行的, 但是会在return之前执行.
      

  12.   


    package com.gjhohj.test;import java.util.ArrayList;
    import java.util.List;public class TestMain01 { public static void main(String args[]) {
            
    System.out.println(noticeFinally());
    }

    public static String noticeFinally(){
        try{
            return "1";
        }finally{
            System.out.println("abc") ;
            
        }
    }}结果是
    abc
    1package com.gjhohj.test;import java.util.ArrayList;
    import java.util.List;public class TestMain01 { public static void main(String args[]) {
            
    System.out.println(noticeFinally());
    }

    public static boolean noticeFinally(){
        try{
            return true;
        }finally{
            return false ;
            
        }
    }}结果就是false
      

  13.   

    会,在return之前执行,面试题总考这个。