爲什麼第2行在第3行沒有編譯? spit()拋出一個已經被第1行捕獲到的HurtException,因此之後出現的任何檢查的異常都應該無法訪問。如果我刪除第2行,第3行將保持可到達狀態。異常不會免除編譯時檢查。在此先感謝爲我澄清這一點。具有多個捕獲語句的無法訪問的代碼
public class Ape {
public void run() {
try {
spit();
} catch (HurtException e) { //line 1
System.out.println("f");
} catch (LimpException ex) { //line 2: Unreachable, HurtException already caught
System.out.println("e");
} catch (Exception ee) { //line 3: Compiles, why?
System.out.println("r");
}
}
public static void main(String[] args) {
new Ape().run();
}
public void spit() throws HurtException {
throw new HurtException();
}
class LimpException extends Exception {
}
class HurtException extends LimpException {
}
}