package cn.itcast;
public class FinallyDemo {
public static void main(String[] args) {
int result = fun();
System.out.println(result);
}
public static int fun(){
int i=1;
try {
i++;
// 执行i++后抛出异常
System.out.println(10/0);
} catch (Exception e) {
// 捕获异常后,输出i为2
System.out.println(i);
// 然后此处有return,本应该返回i并跳出方法了,但还有finally
return i;
}
// 那就先执行finally,i++ 然后输出i为3 最后再执行catch中的return 返回i为2; 所以最后的结果为 232,有换行的.
finally{
i++;
System.out.println(i);
}
// 这里的return无效,混淆视听的. 如果finally中有return的话 那就执行finally中的return 返回值为3, 不执行catch中的了
// 并且java中格式极严,finally中有return,此处的return还写的话直接就报错了
return i;
}
}
|