throw和throws的區別

叮叮当的铜锣烧發表於2024-08-17

throwthrows 在 Java 中是兩個與異常處理相關的關鍵字,但它們的作用和使用場景有所不同。
throw 用於在方法內部主動丟擲一個異常物件。例如:

if (condition) {
    throw new RuntimeException("自定義的異常資訊");
}

throws 則用於在方法宣告處指明該方法可能丟擲的異常型別。例如:

public void method() throws IOException {
    // 方法體,如果可能產生 IOException 則不進行處理,而是宣告丟擲
}

它們的主要區別包括:

  1. 位置不同
    • throw 出現在方法體內部,用來丟擲具體的異常物件。
    • throws 出現在方法宣告處,列出方法可能丟擲的異常型別。
  2. 作用不同
    • throw 用於主動丟擲異常,以中斷當前程式的執行流程。
    • throws 只是告知呼叫者該方法可能會丟擲這些異常,呼叫者需要處理這些可能的異常。
  3. 數量不同
    • throw 每次只能丟擲一個異常物件。
    • throws 可以宣告丟擲多個異常型別,用逗號分隔。
  4. 處理方式不同
    • 對於 throw 丟擲的異常,如果方法內部沒有捕獲處理,會將異常傳遞給上層呼叫者。
    • 對於 throws 宣告的異常,如果呼叫者不進行處理,會導致編譯錯誤。

例如,下面是一個綜合使用 throwthrows 的示例:

public class ThrowThrowsExample {

    public static void main(String[] args) {
        try {
            method1();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void method1() throws IOException {
        if (someCondition) {
            throw new IOException("IO 異常");
        }
    }
}

總之,throw 用於在方法內部丟擲異常,而 throws 用於在方法宣告中告知可能丟擲的異常型別。合理使用它們可以有效地進行異常處理和提高程式碼的健壯性。

相關文章