结论spa
一、无论有没有异常,finally中的代码都会执行code
二、当try、catch中有return时,finally中的代码依然会继续执行blog
三、finally是在return后面的表达式运算以后执行的,此时并无返回运算以后的值,而是把值保存起来,无论finally对该值作任何的改变,返回的值都不会改变,依然返回保存起来的值。也就是说方法的返回值是在finally运算以前就肯定了的。class
四、finally代码中最好不要包含return,程序会提早退出,也就是说返回的值不是try或catch中的值程序
public static int tryCatch(){ int i = 1; try { return i; }finally { // return ++i; ++i; } } 验证结论2.3 输出结果1
public static int tryCatch(){ int i = 1; try { return i; }finally { return ++i; } } 验证结论4 输出结果 是2