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)