HOWTO · Java

Java でユーザー定義のカスタム例外を作成する

このチュートリアルでは、Java でユーザー定義のカスタム例外を作成する方法を示します。

NullPointerException や ArithmeticException などの事前定義された例外以外に、Java でユーザー定義のカスタム例外を作成できます。Throw キーワードと try-catch ブロックは、カスタムのユーザー定義の例外を作成します。

このチュートリアルでは、Java でカスタムのユーザー定義の例外を作成する方法を示します。

Java でのユーザー定義の例外

事前定義された Java 例外は、プログラム内のほとんどすべての例外をカバーしますが、例外を作成する必要がある場合もあります。ユーザー定義の例外は、事前定義された Java 例外のサブセットをキャッチし、特定の処理を提供します。

この例外は、ワークフローおよびビジネスロジックに関連するビジネスロジックの例外である可能性もあります。カスタムのユーザー定義の例外を作成するには、最初に正確な問題を理解する必要があります。

ユーザー定義の例外の例を試してみましょう。ユーザー定義の例外を作成するには、まず、Java.lang から Exception クラスを拡張する必要があります。

例:

package delftstack;

public class User_Defined_Exception {
  public static void main(String args[]) {
    try {
      throw new Custom_Exception(404);
    } catch (Custom_Exception e) {
      System.out.println(e);
      e.printStackTrace();
    }
  }
}
class Custom_Exception extends Exception {
  int code;
  Custom_Exception(int status_code) {
    code = status_code;
  }
  public String toString() {
    return ("This is user defined exception to show the status code: " + code);
  }
}

このコードは、ユーザー定義の文字列例外をスローします。

出力:

This is user defined exception to show the status code: 404
This is user defined exception to show the status code: 404
    at delftstack.User_Defined_Exception.main(User_Defined_Exception.java:6)

Java で ID の有効性をチェックするためのユーザー定義の例外

ID の有効性をチェックするなど、より問題中心の別の例を試してみましょう。

ユーザーが ID を入力すると、例外が作成されます。データベースに存在しない場合、無効な ID 例外がスローされます。

例:

package delftstack;
import java.util.*;

class InValid_ID extends Exception {
  public InValid_ID(String ID) {
    super(ID);
  }
}
public class User_Defined_Exception {
  // Method to find ID
  static void find_ID(int input_array[], int ID) throws InValid_ID {
    boolean condition = false;
    for (int i = 0; i < input_array.length; i++) {
      if (ID == input_array[i]) {
        condition = true;
      }
    }
    if (!condition) {
      throw new InValid_ID("The ID is you Entered is InValid!");
    } else {
      System.out.println("The ID is you Entered is Valid!");
    }
  }
  public static void main(String[] args) {
    Scanner new_id = new Scanner(System.in);
    System.out.print("Enter the ID number: ");
    int ID = new_id.nextInt();
    try {
      int Input_Array[] = new int[] {123, 124, 134, 135, 145, 146};
      find_ID(Input_Array, ID);
    } catch (InValid_ID e) {
      System.out.println(e);
      e.printStackTrace();
    }
  }
}

上記のコードは、無効な ID 例外を作成します。ユーザーが間違った ID を入力すると、例外がスローされます。

無効な出力:

Enter the ID number: 133
delftstack.InValid_ID: The ID is you Entered is InValid!
delftstack.InValid_ID: The ID is you Entered is InValid!
    at delftstack.User_Defined_Exception.find_ID(User_Defined_Exception.java:19)
    at delftstack.User_Defined_Exception.main(User_Defined_Exception.java:32)

有効な出力:

Enter the ID number: 145
The ID is you Entered is Valid!