A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

原帖链接:为什么finally语句会在这个return后面执行 求解释    为什么结果是5
http://bbs.itheima.com/forum.php ... 8&fromuid=13221
大家可以试试下面这段代码跑出来的结果:
  1. public class TestTryCatch {
  2.     /**
  3.      */
  4.     public static void main(String[] args)
  5.     {
  6.         System.out.println("i的值为。。。" + new TestTryCatch().test());
  7.     }

  8.     private int test() {
  9.         int i = 1;
  10.         try
  11.         {
  12.             return i;
  13.         }
  14.         finally
  15.         {
  16.             ++i;//[b]如果结果是2,就说明return语句是在finally之后才执行,嗯哼?[/b]
  17.             System.out.println("finally is Executed…");
  18.         }
  19.     }
  20. }
复制代码
虚脱了,晚安!

1 个回复

正序浏览
由于try catch  finally语句的执行顺序是先执行try内的语句,如果有异常则执行catch,执行完后会执行finally内的代码,
上面这段代码中先执行的try内的代码,返回了i的值1,后又执行finally内的语句,++i,i变为2,再执行System.out.println("finally is Executed…");

然后再去执行return,将1返回,以为2是return之后执行的,所以返回的是1不是2
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马