+ -
当前位置:首页 → 问答吧 → try中有retrun,finaly是在retrun执行之前执行还是之后?

try中有retrun,finaly是在retrun执行之前执行还是之后?

时间:2011-10-29

来源:互联网

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

我知道finaly应该是在return之前执行,可是下面的代码为什么执行的时候结果会是1呢?


public class Test { 

  public static void main(String[] args) { 
  // TODO Auto-generated method stub 
  System.out.println(new Test().test());; 
  } 
  
  static int test() 
  { 
  int x = 1; 
  try 
  { 
  return x; 
  } 
  finally 
  { 
  ++x; 
  } 
  } 
   
}

作者: carter0851   发布时间: 2011-10-29

当然是1啊。。。代码执行顺序啊。 finally里的代码会执行,是在它之上的代码运行完之后。
你再finally 外边 输出x 就变成2了

作者: yeqing4562011   发布时间: 2011-10-29