Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類參考

Java 有用資源

Java - throws 和 throw | 丟擲異常



Java throws 和 throw

如果一個 方法 沒有處理已檢查的 異常,則該方法必須使用throws關鍵字宣告它。throws 關鍵字出現在方法簽名末尾。

您可以丟擲一個異常,無論是新例項化的異常還是剛剛捕獲的異常,方法是使用throw關鍵字。

嘗試理解 throws 和 throw 關鍵字之間的區別,throws 用於推遲已檢查異常的處理,而throw 用於顯式呼叫異常。

語法

以下是使用throwsthrow 丟擲異常的語法 -

method(parameters) throws exception {
  // Method implementation
  throw new exception();
}

以下方法宣告它丟擲一個 RemoteException -

考慮以下示例程式碼以使用throwsthrow 關鍵字 -

import java.io.*;
public class className {

   public void deposit(double amount) throws RemoteException {
      // Method implementation
      throw new RemoteException();
   }
   // Remainder of class definition
}

一個方法可以宣告它丟擲多個異常,在這種情況下,這些異常以逗號分隔的列表形式宣告。例如,以下方法宣告它丟擲一個 RemoteException 和一個 InsufficientFundsException -

import java.io.*;
public class className {

   public void withdraw(double amount) throws RemoteException, 
      InsufficientFundsException {
      // Method implementation
   }
   // Remainder of class definition
}

Java throws 和 throw 示例

以下示例顯示了 throw 關鍵字的使用,以在傳遞無效引數時傳送異常。我們正在呼叫一個 divide 方法,該方法檢查第二個引數是否為零,如果是則會丟擲一個帶有自定義訊息的 IllegalArgumentException。由於 IllegalArgumentException 是一個未經檢查的異常,因此 divide 方法不需要宣告 throws 語句。現在,由於父方法沒有處理異常,因此 JVM 會攔截相同的異常並列印錯誤訊息並終止程式。

package com.tutorialspoint;

public class ExcepTest {

   public static void main(String args[]) {
      int a = 3;
      int b = 0;
      System.out.println("result:" + divide(a,b));
   }

   private static int divide(int a, int b) {
      if(b == 0) {
         throw new IllegalArgumentException("second argument cannot be zero.");
      }
      return a / b;
   }
}

輸出

Exception in thread "main" java.lang.IllegalArgumentException: second argument cannot be zero.
   at com.tutorialspoint.ExcepTest.divide(ExcepTest.java:13)
   at com.tutorialspoint.ExcepTest.main(ExcepTest.java:8)

更多示例

示例 1:在無效引數上丟擲異常

以下示例顯示了 throw 和 throws 關鍵字的使用,以在傳遞無效引數時傳送異常並處理異常。我們正在呼叫一個 divide 方法,該方法檢查第二個引數是否為零,如果是則會丟擲一個帶有自定義訊息的 Exception。由於 Exception 是一個已檢查的異常,因此 divide 方法需要宣告 throws 語句。現在,由於父方法要麼處理異常要麼宣告 throws 異常,我們正在處理異常並列印訊息。

package com.tutorialspoint;

public class ExcepTest {

   public static void main(String args[]) {
      int a = 3;
      int b = 0;
      try {
         System.out.println("result:" + divide(a,b));
      } catch (Exception e) {
         System.out.println("Exception: " + e);
      }
   }

   private static int divide(int a, int b) throws Exception {
      if(b == 0) {
         throw new Exception("second argument cannot be zero.");
      }
      return a / b;
   }
}

輸出

Exception: java.lang.Exception: second argument cannot be zero.

示例 2:在 main 方法和其他方法中使用 throws 和 throw

以下示例顯示了 throw 和 throws 關鍵字的使用,以在傳遞無效引數時傳送異常並且異常未被處理。我們正在呼叫一個 divide 方法,該方法檢查第二個引數是否為零,如果是則會丟擲一個帶有自定義訊息的 Exception。由於 Exception 是一個已檢查的異常,因此 divide 方法需要宣告 throws 語句。現在,由於父方法要麼處理異常要麼宣告 throws 異常,我們正在宣告丟擲異常,JVM 將處理異常。

package com.tutorialspoint;

public class ExcepTest {

   public static void main(String args[]) throws Exception {
      int a = 3;
      int b = 0;
      System.out.println("result:" + divide(a,b));
   }

   private static int divide(int a, int b) throws Exception {
      if(b == 0) {
         throw new Exception("second argument cannot be zero.");
      }
      return a / b;
   }
}

輸出

Exception in thread "main" java.lang.Exception: second argument cannot be zero.
   at com.tutorialspoint.ExcepTest.divide(ExcepTest.java:15)
   at com.tutorialspoint.ExcepTest.main(ExcepTest.java:9)
廣告