黑马程序员技术交流社区

标题: 求教一个try{return}finally{}中的执行顺序 [打印本页]

作者: 范中俊    时间: 2014-11-28 21:41
标题: 求教一个try{return}finally{}中的执行顺序
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
这个的证明代码怎么写呀?
作者: Quasimodo    时间: 2014-11-28 22:28
会执行,是在return之前执行的
代码就在try{}里面return一个数,  在finally {}里面写上打印一句话.
然后调用方法并打印,就可以看到先打印的finally里面的话  然后再打印return的数了
作者: Afridoce    时间: 2014-11-29 10:17
学习了。。。。
作者: as604049322    时间: 2014-11-29 11:38
  1. public class test {

  2.     public static void main(String[] args){
  3.        System.out.println(print());
  4.           
  5.           
  6.     }
  7.         public static String print(){
  8.                 try{
  9.                 System.out.println("try");
  10.                 return "返回语句";
  11.                 }finally{
  12.                 System.out.println("finally");
  13.                 }
  14.         }
  15. }
复制代码

运行结果:
try
finally
返回语句
作者: lwh316658735    时间: 2014-11-29 12:49
finally 里的代码会被执行的,
作者: lwh316658735    时间: 2014-11-29 12:51
finally 里的代码会被执行的,如果你想亲身体会的话 可以
   try{
                return 1
                }finally{
                return 2
                }
用下列代码尝试下,亲身体验印象是最深刻的!
作者: superjiejie    时间: 2014-11-29 22:01
这是一个经典的java基础面试题

code 在return中间执行   不会弄那个代码 ~直接打了

public static void main(String args[]){
system.out.println(new Test().test());
}

public static int test(){
int  i = 1;
try {
return i;
} finally{
++i;
}
}
} 结果为1    同理 就知道这个题的答案

作者: 娱尘    时间: 2014-11-29 22:24
7楼的答案是正确的,我们今天刚好讲到这里,code 在return中间执行
作者: g124989452    时间: 2014-11-29 22:33
finally会在return之间执行,当程序走到return时,会首先建立返回路径,再执行finally,finally执行后会重回到return,然后返回。
作者: 夜海    时间: 2014-11-30 12:56
会在return 中间执行




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