在Java中,凡是可能拋出異常的語句,都可以用try ... catch捕捉。把可能發生異常的語句放在try { ... }中,然後使用catch捕捉對應的Exception及其子類別。
多catch語句
可以使用多個catch語句,每個catch分別捕獲對應的Exception及其子類別。 JVM在捕獲到異常後,會從上到下匹配catch語句,匹配到某個catch後,執行catch程式碼區塊,然後不再繼續匹配。 (建議學習:java課程)
簡單來說是:多個catch語句只有一個能執行。例如:
public static void main(String[] args) { try { process1(); process2(); process3(); } catch (IOException e) { System.out.println(e); } catch (NumberFormatException e) { System.out.println(e); } }
存在多個catch的時候,catch的順序非常重要:子類別必須寫在前面。例如:
public static void main(String[] args) { try { process1(); process2(); process3(); } catch (IOException e) { System.out.println("IO error"); } catch (UnsupportedEncodingException e) { // 永远捕获不到 System.out.println("Bad encoding"); } }
對於上面的程式碼,UnsupportedEncodingException異常是永遠捕獲不到的,因為它是IOException的子類別。當拋出UnsupportedEncodingException異常時,會被catch (IOException e) { ... }捕獲並執行。
因此,正確的寫法是把子類別放到前面:
public static void main(String[] args) { try { process1(); process2(); process3(); } catch (UnsupportedEncodingException e) { System.out.println("Bad encoding"); } catch (IOException e) { System.out.println("IO error"); } }
以上是java怎麼捕獲異常的詳細內容。更多資訊請關注PHP中文網其他相關文章!