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

解决方案 »

  1.   

    会执行啦,不是回答过了吗
    执行顺便在return前
    问题已经解决了,可以结帖给分啦
      

  2.   

    finally 里面的代码不管怎么样都是会被执行的。
    public 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
      

  3.   

    先执行 try里面的输出 
    然后执行 finally里面的输出
    最后才返回的
      

  4.   

    会的哦 但是要是在try里面写exit 好像finally不会被执行!
      

  5.   

    除非强行关闭 JVM ,其他情况 finally 里的语句都会执行
      

  6.   

    会执行 在return前执行!  如果finally里面也有return语句的话,返回的值是return里面返回的!
      

  7.   

    首先,可以确定 finally 里的语句是一定会执行的。
    如果 try 和 finally 里都有 return 的话,那么只会执行 finally 里的 return,不会再去执行 try 里的 return 了。如:
    public static boolean tryFinallyTest(){ 
        try{ 
         System.out.println("a");
            return false; 
        }finally{
         System.out.println("b");
            return true;
        } 
    }  
    那么,返回的会是 
    a
    b
    tryFinallyTest= true
      

  8.   

    看下这个文章吧、、http://www.java1995.cn/blog/item/82
      

  9.   

    1. 在finally里面写return是逻辑错误。
    2. 先运算try里面的return后边跟的表达式(例如exp1),然后执行finally块,最后返回exp1得到的值。
    3. 如果exp1抛出异常,运行相应的catch,然后finally。
    4. 如果exp1抛出异常,又没有相应的catch,那么finally,最后继续抛出异常。可以自行写例子测试。
      

  10.   

    我在这里叫下真,只要try中没有像system.exit(0)这样的结束程序的语句,finally都会执行。
    哈哈,上面的同志全部要喷饭吧!!!!
      

  11.   


    这个是最佳答案大家注意第二条,下面的代码似乎返回1,不是2
    int a=0;
    try{
      a=1;
      return a;
    }
    finally{
      a = 2;
    }一般,return编译成及其语言会有2个操作,将返回值压入堆栈,然后跳回到调用函数的代码去执行(修改cs寄存器?).(这点学过汇编的同学应该比较清楚)finally里的代码是这个时候执行,压栈之后,跳回之前。在return之前或之后这2种说法都是错误的
      

  12.   

    java爱好者的免费学习视频、实战视频 下载列表  参见博客 http://user.qzone.qq.com/312311285/blog/1264432325