public static int exception() throws Exception {
int i=2;
try{
i++;
System.out.println(i);
return i;
}catch (Exception e){
i++;
return i;
}finally {
i++;
System.out.println(i);
return i;
}
}
执行顺序:
try语句—>return 挂起—>遇到异常进入catch语句—>进入finally—>最终执行finally中的return
try与catch相互独立,对于又返回数据的方法必须有return语句,finally可以没有return
所有语句执行,都会对i变量产生影响
如果finally里面没有return语句,try里面的return语句会先挂起,等待finally执行结束后返回,finally里面对i变量值得改变不会改变try语句中的返回结果。个人理解,try语句里面的return结果已经确定,不会再改变。