[英]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.