Java で複数の例外をキャッチする
- Java で複数の Catch ステートメントを使用して複数の例外をキャッチする
-
Java で
instanceOf
を使用して複数の例外をキャッチする -
キャッチブロックで
|
を使用して複数の例外をキャッチする。Java で
今日は、Java で複数の例外を使用してキャッチする方法を見ていきます。Java の例外は、実行時に不要なイベントが発生した場合に発生します。例外を確認する最も一般的な方法は、try-catch キーワードを使用することです。ここで、try
にはチェックするコードのブロックが含まれ、catch
には例外が発生したときに表示するコードが含まれています。
次の例を使用して、1 回のキャッチで複数の例外を使用する 3つの方法を確認します。
Java で複数の Catch ステートメントを使用して複数の例外をキャッチする
この例では、ユーザーから 2つの int 型入力を取得し、それらを分割して結果を表示します。このコードを try
ブロックで囲んでいることに注意してください。これは、catch
ブロックも必要であることを意味します。
入力された値が int
タイプでない場合は InputMismatchException
のように複数の例外がスローされ、num2
がゼロで除算された数値がないために値がゼロになる場合は ArithmeticException
がスローされる場合があります。他のすべての例外の親である Exception
をスローできます。
それらすべてをキャッチするために、例外タイプを含む 3つの異なる catch
ブロックを記述し、その例外がいつ発生するかを示すメッセージを出力します。例外がない場合と例外がある場合の出力には、異なる結果が表示されます。
import java.util.InputMismatchException;
import java.util.Scanner;
public class MultiExceptions {
public static void main(String[] args) {
System.out.println("Enter two numbers: ");
Scanner sc = new Scanner(System.in);
try {
System.out.println("num1: ");
int num1 = sc.nextInt();
System.out.println("num2: ");
int num2 = sc.nextInt();
int dividedNum = num1 / num2;
System.out.println("After division result: " + dividedNum);
} catch (InputMismatchException e1) {
System.out.println("Error! - Please enter a number.");
} catch (ArithmeticException e2) {
System.out.println("Error! - You cannot divide any number with 0");
} catch (Exception e3) {
System.out.println("An error occurred please try again!");
}
}
}
出力 1:
Enter two numbers : num1 : 10 num2 : 2 After division result : 5
出力 2:
Enter two numbers : num1 : 50 num2 : hhh Error !-Please enter a number.
出力 3:
Enter two numbers : num1 : 10 num2 : 0 Error !-You cannot divide any number with 0
Java で instanceOf
を使用して複数の例外をキャッチする
実行できる別のメソッドには、オブジェクトが指定されたタイプであるかどうかをチェックする instanceOf
関数の使用が含まれます。ブール値を返します。上記と同じ例を使用しますが、ここでは、複数の if ステートメントを持つ単一の catch
ブロックを使用します。
上で説明したように、例外
は最も一般的な例外の親クラスです。そのオブジェクトを使用して、スローされた例外が指定されたタイプであるかどうかを確認できます。ここでは、InputMismatchException
と ArithmeticException
の 2つの例外を確認します。
import java.util.InputMismatchException;
import java.util.Scanner;
public class MultiExceptions {
public static void main(String[] args) {
System.out.println("Enter two numbers: ");
Scanner sc = new Scanner(System.in);
try {
System.out.println("num1: ");
int num1 = sc.nextInt();
System.out.println("num2: ");
int num2 = sc.nextInt();
int dividedNum = num1 / num2;
System.out.println("After division result: " + dividedNum);
} catch (Exception e) {
if (e instanceof InputMismatchException) {
System.out.println("Error! - Please enter a number.");
} else if (e instanceof ArithmeticException) {
System.out.println("Error! - You cannot divide any number with 0");
} else {
System.out.println("An error occurred please try again!");
}
}
}
}
出力:
Enter two numbers:
num1:
d
Error! - Please enter a number.
キャッチブロックで|
を使用して複数の例外をキャッチする。Java で
Java 7 以降では、パイプ記号またはビットごとの OR
を使用して、1つのキャッチで複数の例外を書き込むことができます。この例では、入力された 2つの数値を除算してから、2つの例外のいずれかが真であるかどうかを確認します。true の場合、エラーメッセージが出力されます。
import java.util.InputMismatchException;
import java.util.Scanner;
public class MultiExceptions {
public static void main(String[] args) {
System.out.println("Enter two numbers: ");
Scanner sc = new Scanner(System.in);
try {
System.out.println("num1: ");
int num1 = sc.nextInt();
System.out.println("num2: ");
int num2 = sc.nextInt();
int dividedNum = num1 / num2;
System.out.println("After division result: " + dividedNum);
} catch (InputMismatchException | ArithmeticException e) {
System.out.println("An error occurred please try again");
}
}
}
出力:
Enter two numbers:
num1:
f
An error occurred please try again
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn