一.概述
- 本文说明Java中finally的用法和可能遇到的坑
- finally的目的是保证代码被执行,但也会存在不执行的情况
- finally 代码块的原理是复制 finally 代码块的内容,分别放在 try-catch 代码块所有正常执行路径以及异常执行路径的出口中。
所以不管是是正常还是异常执行,finally都是最后执行的。
二. finally会执行的情况
1.有catch(无异常)
try {
System.out.println("try execute");
} catch (RuntimeException e) {
System.out.println("catch execute");
} finally {
System.out.println("finally execute");
}
输出
try execute
finally execute
3.有catch(try异常)
try {
System.out.println("try execute");
throw new RuntimeException("try Exception");
} catch (Exception e) {
System.out.println("catch execute");
} finally {
System.out.println("finally execute");
}
输出
try execute
catch execute
finally execute
4.有catch(catch异常)
try {
System.out.println("try execute");
} catch (Exception e) {
System.out.println("catch execute");
throw new RuntimeException(