try catch 中finally语句总是可以执行的,不管try中是否含有return语句
public class TestReturn { public static void main(String[] args){ System.out.println(testReturn()); } public static int testReturn(){ int i = 0; try{ i = 1; return i; }catch(Exception e){ e.printStackTrace(); }finally{ i += 1; System.out.println(i); } return i; } }
输出结果
2 //这是finally语句中的输出语句输出的 1 //这是方法中try中return的值
从输出结果可以看到,先执行try语句,再执行finally,再执行try中的return语句。。。。。finally中的对try中变量修改后,对try中return不影响,因为try中要return的变量已经保存了。。
如果finally含有return,则直接在finally中return,不从try return了。。