複数の例外のキャッチについて学ぶ前に、Java の基本的な例外処理に精通している必要があります。ここからは、Java の try および catch ブロックに精通していることを前提としています。

Java ではなぜ複数の catch ブロックが必要なのでしょうか?

Java の複数の catch ブロックは、さまざまなタイプの例外を処理するために使用されます。Java 7 がリリースされる前は、特定の例外をキャッチするために特定の catch ブロックが必要でした。これにより、冗長なコードのブロックが作成され、非効率的なアプローチとなりました。キャッチされた例外を確認するには、次の例を見てください。さまざまな種類の例外に対して個別の catch ブロックを使用します。

個別の Catch ブロックを使用した例


import java.util.Arrays;

public class ExceptionHandler {

	public static void main(String[] args) {

		Integer[] colorsOfASpectrum = { 7, 6, 5, 4, 3, 2, 1, 0 };

		try {

			System.out.println("Total number of options on a dice are: " + Arrays.toString(colorsOfASpectrum));
		
	// 		un-comment the following line to see "Index Out of Bounds Exception"		
	//		colorsOfASpectrum[10] = 7; // Index Out of Bounds Exception
			
			System.out.println(colorsOfASpectrum[0] / 0);	// Arithmetic Exception

		} catch (ArrayIndexOutOfBoundsException e) {
			// This catch block executes in case of "Index Out of Bounds Exception"
			System.out.println("Array Index Out Of Bounds Exception " + e);
		
		} catch (ArithmeticException e) {
			// This catch block executes in case of "Arithmetic Exception"
			System.out.println("Arithmetic Exception " + e);
		}
		
		System.out.println("\n----Rest of the code executes here----");
	}
}

出力

スペクトル上の合計の色は次のとおりです: [7、6、5、4、3、2、1] 例外が発生しました java.lang.ArithmeticException: / by zero ----コードの残りの部分がここで実行されます----
ご覧のとおり、上記の例では、例外がスローされたときに別のブロックが実行されます。異なるタイプの例外をキャッチするための同じコード ブロックを使用して、複数の例外をキャッチするより効率的な方法があります。次の例を見てください。

Java での複数の Catch ブロックの使用例


import java.util.Arrays;

public class MultiExceptionHandler {

	public static void main(String[] args) {

		Integer[] colorsOfASpectrum = { 7, 6, 5, 4, 3, 2, 1 };

		try {

			System.out.println("Total colors on a spectrum are: " + Arrays.toString(colorsOfASpectrum));

	//		colorsOfASpectrum[10] = 7; // Index Out of Bounds Exception
			System.out.println(colorsOfASpectrum[0] / 0); // Arithmetic Exception

		} catch (ArrayIndexOutOfBoundsException | ArithmeticException e) {
			// We don't need two different catch blocks for different kinds of exceptions
			// Both exceptions will be handled using this multiple catch block

			System.out.println("Exception Encountered " + e);
		}
		System.out.println("\n----Rest of the code executes here----");
	}
}

出力

他の種類の例外を出力するには、13 行目のコメントを解除できます。
スペクトル上の合計の色は次のとおりです: [7、6、5、4、3、2、1] 例外が発生しました java.lang.ArithmeticException: / by zero ----コードの残りの部分がここで実行されます----

結論

これは、Java の複数の例外ブロックのキャッチの使用方法の簡単な概要でした。チャレンジとして、親例外と子の例外を同じブロックに出力してみてください。成長するために学び、実践することが奨励されています。乾杯、楽しく学習しましょう!