捕獲異常時,爲什麼在catch中要注意異常層級關係?須要注意哪些問題?
- 注意,catch中必定要注意層級關係。這裏舉一個簡單的案例,就能夠很好的理解爲什麼要注重層級問題呢!
- 技術博客大總結
public static void start() throws IOException, RuntimeException{
throw new RuntimeException("Not able to Start");
}
public static void main(String args[]) {
try {
start();
} catch (Exception e) {
e.printStackTrace();
} catch (RuntimeException e2) {
e2.printStackTrace();
}
}
複製代碼
- 這段代碼會在捕捉異常代碼塊的RuntimeException類型變量「e2」裏拋出編譯異常錯誤。由於Exception是RuntimeException的超類,在start方法中全部的RuntimeException會被第一個捕捉異常塊捕捉,這樣就沒法到達第二個捕捉塊,這就是拋出「exception java.lang.RuntimeException has already been caught」的編譯錯誤緣由。