前言
try-catch-finally的执行顺序,你知唔知,如果包含return呢?
try-catch-finally执行顺序
正常的顺序我们都清楚,先执行try里面的语句,如果跑出异常再执行catch里面的语句,最终执行finally语句。
如果try-catch-finally里面包含return呢?
实例一:
public static int test() {
try {
System.out.println("try");
return 1;
} catch (Exception e) {
System.out.println("catch");
return 2;
} finally {
System.out.println("finally");
}
}
public static void main(String[] args) {
System.out.println(test());
}
结果:先执行了try里面的语句,在return之前执行了finally。
try
finally
1
实例二:
public static int test() {
try {
System.out.println("try");
throw new Exception();
} catch (Exception e) {
System.out.println("catch");
return 2;
} finally {
System.out.println("finally");
}
}
public static void main(String[] args) {
System.out.println(test());
}
结果:先执行try,异常被catch捕获,执行catch,在return之前执行了finally。
try
catch
finally
2
实例三:
public static int test() {
try {
System.out.println("try");
return 1;
} catch (Exception e) {
System.out.println("catch");
return 2;
} finally {
System.out.println("finally");
return 3;
}
}
public static void main(String[] args) {
System.out.println(test());
}
结果:显而易见,先执行try,最终执行到finally,然后如果finally里面有return则在finally里面return。
try
finally
3
小结
简单总结:不管如何,finally语句最终都会执行,如果try和catch里面存在return,会在return之前执行finally语句。