在Java语法中,return表示当前执行的结束,finally则是在当前代码块一定会执行的代码块。如果return在finally在之前执行,finally也会执行吗?答案是肯定的!
但是,finally和return的执行顺序则并不是真正意义上的先后顺序。
1 public String test(){ 2 String s = ""; 3 try { 4 s = "try"; 5 System.out.println(s); 6 return s; 7 } catch (Exception e) { 8 s = "catch"; 9 return s; 10 } finally { 11 System.out.println(s); 12 s = "finally"; 13 System.out.println(s); 14 } 15 }
在上面的代码中,最后的输出finally,但是test方法返回的参数值确实try。
个人认为,这个先后顺序没有计较的价值。需要知道的是:
1、finally执行的时候并不能改变返回参数的值;
2、finally代码块中最后不要用return;
3、finally和return一起使用,finally是会被执行的。
测试JDK:java version "1.6.0_45"
时间: 2024-10-29 19:06:32