1.执行try中的return
public static int show() {
try {
return 1;
} catch (Exception e) {
return 2;
} finally {
System.out.println("finally模块被执行");
}
}
public static void main(String args[]) {
System.out.println(show());
}
输出结果:
2.执行catch中的return
public static int show() {
try {
int a = 10 / 0;
return 1;
} catch (Exception e) {
return 2;
} finally {
System.out.println("finally模块被执行");
}
}
public static void main(String args[]) {
System.out.println(show());
}
输出结果:
结论:程序从try代码块或者catch代码块中返回时,finally中的代码会先执行。
3.既有finally又有return
public static int show() {
try {
//int a = 10 / 0;
return 1;
} catch (Exception e) {
return 2;
} finally {
System.out.println("finally模块被执行");
return 0;
}
}
public static void main(String args[]) {
System.out.println(show());
}
输出结果:
结论:当finally有返回值时,会直接返回。不会返回try或catch中的返回值。
4.当finally对变量做修改是否影响返回值
public static int show() {
int a = 10;
try {
System.out.println(a + " 我是try");
return a;
} catch (Exception e) {
return 2;
} finally {
System.out.println("finally模块被执行");
a = 0;
System.out.println(a);
}
}
public static void main(String args[]) {
System.out.println(show());
}
输出结果:
结论:try或catch的return是一个变量,函数的是从两个之中返回时,后面finally中语句有对返回的变量进行赋值的操作时,不会影响返回的值。