1、概述
A:不管用没有出现异常,finally都会执行。
B:当try与catch中有return时,finally仍会执行。
C:finally是在return(在try、catch中出现的return)之后执行,但不会影响到返回的结果。
* return表达式的结果,会先保存,执行完finally后,再返回。
D:finally最好不要出现return,否则会提前返回,返回的不是保存的值。
2、举例
A:返回值情况
private static int tmp(){ int a = 1; int b = 2; try { return a + b; //将a+b的结果保存,执行finally,再将保存的结果返回。 } catch (Exception e) { }finally{ a = 2; //并不会影响返回值 } return 1; } public static void main(String[] args) { System.out.println(tmp()); //结果为 3 }
B:提前结束情况
private static int tmp(){ int a = 1; int b = 2; try { return a + b; //将a+b的结果保存,执行finally,再将保存的结果返回。 } catch (Exception e) { }finally{ return 0; //遇到return直接返回。 } } public static void main(String[] args) { System.out.println(tmp()); //结果为 0 }