`
yangmingjiayou
  • 浏览: 112494 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

 
阅读更多

finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

 

执行下面的代码:

public class TestReturn {
   public String message() {
         System.out.println("returned start");
         return "return";
     }

     public String testFinal() {
         try {
            return  message();
         } catch (Exception e) {
             e.printStackTrace();
             return  "exception";
         } finally {
             System.out.println("do finally");
//             return "finally";                                   -----1
         }
     }

     public static void main(String[] args) {
      TestReturn test = new TestReturn();
       System.out.println( test.testFinal());
     }


}

 

执行结果为:

returned start
do finally
return

 

把代码中红色那行注释去掉 执行结果为:

returned start
do finally
finally

 

通过这个例子可以发现

try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回,而在finally如果有return那么就返回finnally的值。

分享到:
评论

相关推荐

    finally分析

    在这个例子中,即使`__try`块内的代码提前退出(例如通过`return`),`__finally`块中的代码仍然会被执行,从而避免了内存泄漏的问题。 #### 五、深入分析 要深入理解终止处理程序的工作原理,我们需要了解以下几个...

    变态级JAVA程序员面试32问

     第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?  第二十八,编程题: 用最有效率的方法算出2乘以8等於几?  第二十九,两个...

    Java问题宝典2012版

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 27 39、下面的程序代码输出的结果是多少? 28 40、final, finally, finalize的区别。 30 ...

    java 面试常问的问题 如何回答

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    java面试宝典

    21、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 10 22、我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,...

    变态级JAVA程序员面试32问(附答案)

    27. try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的代码会不会被执行,什么时候被执行,在 return 前还是后? finally {}里的代码总是会被执行,不管 try 语句中是否有 return 语句。finally...

    net学习笔记及其他代码应用

    43.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 答:会执行,在return前执行。 44.两个对象值相同(x.equals(y) == true),但却可有不同...

    JAVA程序员面试32问

    #### 第二十七,try{} 里有一个 return 语句,那么紧跟在这个 try 后的 finally{} 里的 code 会不会被执行,什么时候被执行,在 return 前还是后? - `finally`块中的代码一定会被执行,即使`try`块中有`return`...

    JAVA面试题 对JAVA面试有帮助!

     第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?  第二十八,编程题:用最有效率的方法算出2乘以8等於几?  有C背景的程序员...

    java面试宝典2012版.pdf

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 39、下面的程序代码输出的结果是多少? 40、final, finally, finalize的区别。 41、...

    java面试葵花宝典

    #### try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后 - `finally`块中的代码总会被执行,即使`try`块中有`return`语句。`finally`块会在`return`...

    Java面试宝典2013_PDF版.pdf

    38. try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? finally块中的代码总是会被执行,无论try块中是否有return语句,并且总是会在return执行前...

    java 面试题

    try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? `finally`块中的代码总是会被执行,无论`try`块中是否发生异常或包含`return`语句。如果`...

    java 面试宝典

    try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?** 会执行`finally`块中的代码。无论`try`块中是否有`return`,`finally`块总是会被执行,并且...

    java学习文档

    try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? `finally`块中的代码总是会被执行,即使`try`块中有`return`语句。`finally`块中的代码在`...

    java常见面试题

    try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? `finally`块中的代码总是会执行,即使在`try`或`catch`块中有`return`语句。`finally`块在`...

    java面试大全

    try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?** 会执行`finally`块中的代码。如果`finally`中有`return`,那么它的返回值会覆盖`try`块中的...

    2011最新Java程序员面试笔试宝典

    try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? `finally`块总是会执行,即使`try`块中有`return`语句。执行顺序是先执行`finally`块,再返回...

Global site tag (gtag.js) - Google Analytics