日期:2014-05-20  浏览次数:20809 次

超简单的问题:我的代码会执行到哪里?
try{
      代码1;
      return   1;
}catch(Exception   e){
      代码2;
      return   2;
}finally{
      代码3
}
return   3;
我的代码如果执行了[   return   1   ],那么finally{}里面的语句会执行吗?
还有如果执行了[   return   2   ],那么finally{}里面的语句会执行吗?

------解决方案--------------------
没想过这样会怎么样......
反正我不会在实际中这么写代码...
搬个板凳,慢慢等.

------解决方案--------------------
都会
------解决方案--------------------
同上,都会
------解决方案--------------------
finally的优先级别比return高! return 之前执行finally里的代码
------解决方案--------------------
除非System.exit(0);
否则都会执行代码3
------解决方案--------------------
finally中的代码是必然要执行的。
如果try中发生异常,则catch中的代码执行,并且finally中的代码执行,当catch中的代码没有再次抛出异常,则finally后面的代码执行。


public class Test
{
public static void main(String[] args) throws Exception
{
try{
throw new Exception();
}catch(Exception e){
System.out.println( "Exception!!!!! ");
//throw e;
}finally{
System.out.println( "Finally!!!!! ");
}
System.out.println( "After!!!!! ");
}
}


当你把//throw e;不注释的时候,在编译的时候会告诉你System.out.println( "After!!!!! ");是执行不到语句。

------解决方案--------------------
噢...明白了.