有return的情况下,try-catch-finally的执行顺序
1. 当try和finally中都有return语句时,系统执行到try语句块中的return时,会先检测finally语句块有没有执行,
如果没有执行,直接去执行finally语句块
try {
System.out.println("try语句块执行");
return;
} catch (Exception e) {
System.out.println("catch语句块执行");
return;
} finally {
System.out.println("finally语句块执行");
return;
}
2. 当我们运行程序时,不排除JVM会突然退出,所以当在try语句块中执行System.exit(1)语句时,JVM会强制退出,这样,finally语句块不会执行
try {
System.out.println("try语句块执行");
System.exit(1);
} catch (Exception e) {
System.out.println("catch语句块执行");
return;
} finally {
System.out.println("finally语句块执行");
return;
}
3. 还有一种情况,在发生异常时,在发生异常时,会直接执行catch语句块,异常下面的代码,都不会执行
try { System.out.println("try语句块执行"); int i = 1/0; System.exit(1); } catch (Exception e) { System.out.println("catch语句块执行");
return; } finally { System.out.println("finally语句块执行"); return; }