finally 语句块一定执行吗?
答案是不一定。
直接返回未执行到 finally 语句块
抛出异常未执行到 finally 语句块
系统退出未执行到 finally 语句块
…
存在很多特殊情况导致 finally 语句块不执行。
代码如下
public static String test() {
String str = null;
int i = 0;
if (i == 0) {return str;// 直接返回未执行到 finally 语句块}
try {System.out.println("try...");
return str;
} finally {System.out.println("finally...");
}
}
public static String test2() {
String str = null;
int i = 0;
i = i / 0;// 抛出异常未执行到 finally 语句块
try {System.out.println("try...");
return str;
} finally {System.out.println("finally...");
}
}
public static String test3() {
String str = null;
try {System.out.println("try...");
System.exit(0);// 系统退出未执行到 finally 语句块
return str;
} finally {System.out.println("finally...");
}
}
————————————————
版权声明:本文为 CSDN 博主「ConstXiong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/meism5/…