finally语句块的执行范围skycto-JEEditor

34次阅读

共计 724 个字符,预计需要花费 2 分钟才能阅读完成。

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/…

正文完
 0