HOWTO · Java

Java での無効な入力例外

このチュートリアルでは、Java で無効な入力例外を作成する方法を示します。

このページの内容

Java は Invalid Input という名前の例外を提供しませんが、一部の IO 例外とランタイム例外を使用して無効な入力を処理できます。 状況に応じて IO 例外から取得したり、無効な入力に対して ユーザー定義の例外 を作成したりできます。

このチュートリアルでは、Java で無効な入力に対して例外を使用する方法を示します。

Javaで入力引数が無効な場合

メソッドを操作するときに、無効な入力引数を入れると、IllegalArgumentException がキャッチされることがあります。 以下の例は、Java での IllegalArgumentException を示しています。

package delftstack;

public class Invalid_Argument {
  public static void main(String[] args) {
    Thread Demo_Thread = new Thread(new Runnable() {
      public void run() {
        try {
          Thread.sleep(-100);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
        System.out.println("Hello! This is delftstack.com");
      }
    });

    Demo_Thread.setName("Delftstack Thread");
    Demo_Thread.start();
  }
}

上記のコードは、Thread.sleep() への入力が無効であるため、IllegalArgumentException をスローします。 出力を参照してください:

Exception in thread "Delftstack Thread" java.lang.IllegalArgumentException: timeout value is negative
	at java.base/java.lang.Thread.sleep(Native Method)
	at delftstack.Invalid_Argument$1.run(Invalid_Argument.java:10)
	at java.base/java.lang.Thread.run(Thread.java:833)

Javaで入力がnullの場合

null 値がオブジェクトに代入されるか、null 入力を操作しようとすると、NullPointerException がスローされます。 また、無効入力例外としても使用できます。

例を参照してください:

package delftstack;

import java.io.*;

public class Null_Invalid {
  public static void main(String[] args) {
    String Demo = null;
    try {
      if (Demo.equals("delftstack"))
        System.out.print("The Strings are equal");
      else
        System.out.print("The Strings are not equal");
    } catch (NullPointerException e) {
      System.out.print("The String is null");
      e.printStackTrace();
    }
  }
}

上記のコードは、null 文字列の使用が無効になる可能性があることを示しています。 null 文字列が別の文字列と比較されるため、このコードは NullPointerException をスローします。

例を参照してください:

The String is null
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "Demo" is null
	at delftstack.Null_Invalid.main(Null_Invalid.java:9)

Java での無効な入力に対するユーザー定義の例外

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

例を参照してください:

package delftstack;

import java.util.*;

class InValid_ID extends Exception {
  public InValid_ID(String ID) {
    super(ID);
  }
}
public class Invalid_Input {
  // 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 が無効な場合、つまりデータベースに存在しない場合にスローされる例外を作成します。 同様に、条件に基づいて例外を作成できます。

出力:

Enter the ID number: 122
delftstack.InValid_ID: The ID is you Entered is InValid!
delftstack.InValid_ID: The ID is you Entered is InValid!
	at delftstack.Invalid_Input.find_ID(Invalid_Input.java:20)
	at delftstack.Invalid_Input.main(Invalid_Input.java:33)