finally一定会执行吗?回答当然是否定的,假如在try里执行了System.exit(0)就不会再去执行finally了,守护线程中的finally碰到非守护线程全部退出的时候也可能执行不到。
又如下面的代码,会打印什么内容?
- public class Test {
- public static void main(String... args) {
- System.out.println(getValue1());
- System.out.println(getValue2());
- }
-
- public static int getValue1() {
- int i1 = 0;
- int i2 = 1;
- try {
- return i1;
- } finally {
- return i2;
- }
- }
-
- public static int getValue2() {
- int i = 1;
- try {
- return i;
- } finally {
- i++;
- }
- }
- }
复制代码 大家说说自己的想法呗?
|
|