环境:JDK7
有时候会遇到在try的catch中有return语句,finally中也有return语句。
这时要小心执行顺序。
package test;
public class Test {
public static void main(String[] args) {
// catch与finally中都有return
String b = catch_finally_return();
System.out.println(b);
System.out.println();
// catch中都有return
b = catch_return();
System.out.println(b);
System.out.println();
// exit
exit();
}
// catch与finally中都有return,finally中的return会覆盖catch中的return
public static String catch_finally_return() {
try {
int a = 0;
int b = 2 / a;
} catch (Exception e) {
System.out.println("catch");
return "a";
} finally {
System.out.println("finally");
return "我是finally";
}
}
// catch命中后,只有catch中的return有效
public static String catch_return() {
try {
int a = 0;
int b = 2 / a;
} catch (Exception e) {
System.out.println("catch");
return "a";
} finally {
System.out.println("finally");
}
return "我是end";
}
// finally中的代码不会执行,System.exit的优先级最高
public static void exit() {
try {
int a = 0;
int b = 2 / a;
} catch (Exception e) {
System.out.println("catch");
System.exit(1);
} finally {
System.out.println("finally");
System.exit(2);
}
}
}
执行的结果是:
catch finally 我是finally catch finally a catch
 沪公网安备 31011502001064号
沪公网安备 31011502001064号