finally語句塊的執行範圍(skycto JEEditor)

finally語句塊必定執行嗎?

答案是不必定。.net

直接返回未執行到finally語句塊
拋出異常未執行到finally語句塊
系統退出未執行到finally語句塊

...code

存在不少特殊狀況致使finally語句塊不執行。blog

代碼以下get

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/...it

相關文章
相關標籤/搜索