簡體   English   中英

在try finally塊中從try塊返回

[英]Return from try block in try finally block

我有兩個代碼片段,我從try返回並且最終也是塊。第一個工作正常,最后也打印出來,后來在標記為line1的行上給出了編譯時錯誤。

第一個片段

class abc {
public static void main(String args[]) {
    System.out.println("1");
    try {
        return;
    } catch (Exception ex) {
        System.out.println("Inside catch");
    } finally {
        System.out.println("2");
    }
    System.out.println("3");
}
}

第二個片段(編譯時錯誤)

class Test11 {
public static void main(String[] args) {
    Test11 test = new Test11();
    System.out.println("1");
    try {
        return;
    } finally {
        System.out.println("2");
    }
    // COMPILER ERROR
    // System.out.println(test instanceof Test11);// line 1
}
}

答:原因在第一個片段中有一個執行路徑,后面跟着catch塊,但是在第二個片段中沒有這樣的路徑,所以在最終無法訪問后聲明。

第1行是無法訪問的語句。 因為沒有可能去line1。

如果Exception trows它會在內部嘗試。 如果沒有從方法返回。

如果catch塊存在,它確保如果在try塊中發生異常它將轉到第1行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM