Java に try-catch ブロックを挿入することで、コード内で例外を処理できます。この記事では、複数の catch ブロックまたは catch ブロックの複数の引数を使用して、単一の try ブロックに対する複数の例外を処理する方法を説明します。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
Java での複数の Catch ブロックの構文は次のとおりです。
構文 1: 単純な try-catch ブロック
try { //code snippet which might responsible for exceptions } catch (<type_of_exception> <name_of_exception_object>) { //here we handle exceptions }
構文 2: 複数の catch ブロックを含む try-catch ブロック
try { //code snippet which might responsible for exceptions } catch (<type_of_exception> <name_of_exception_object>) //catch block 1 { //here we handle exceptions } catch (<type_of_exception> <name_of_exception_object>) //catch block 2 { //here we handle exceptions } catch (<type_of_exception> <name_of_exception_object>) //catch block 3 { //here we handle exceptions }
構文 3: catch ブロックの引数として複数の catch ステートメントを含む try-catch ブロック
try { //code snippet which might responsible for exceptions } catch (<type_of_exception1> | <type_of_exception2> | <type_of_exception3> <name_of_exception_object>) { //here we handle exceptions }
最初に、catch ブロックに移動する前に try ブロックをチェックする必要があります。
これには、例外が発生する可能性のあるコード スニペットが含まれています。したがって、コードで例外が発生する可能性があると思われる場合は、そのコード スニペットを try ブロック内に配置してください。 try ブロックには少なくとも 1 つの catch ブロックが必要です。
これには、対応する try ブロック内に記述されたコードで発生する可能性のある例外を処理するコード スニペットが含まれています。複数の例外があった場合、どのように対処すればよいでしょうか?
次の 2 つの方法があります:
コンストラクター内に try-catch ブロックを記述することもでき、期待どおりに動作します。以下の例では、try コンストラクター内にコードを記述します。try ブロックは、catch ブロックで処理される算術例外を生成します。
public class MultipleCatchBlockInConstructor { MultipleCatchBlockInConstructor() { try { int num=6/0; } catch(ArrayIndexOutOfBoundsException excp) { System.out.println("Exception is : "+excp); } catch(ArithmeticException excp) { System.out.println("Exception is : "+ excp); } } public static void main(String[] args) { MultipleCatchBlockInConstructor mc=new MultipleCatchBlockInConstructor(); } }
出力:
このセクションでは、多くのコード例について説明します。このコードを自分で試して、指定されたコードで出力を集計する必要があります。
これは、マルチキャッチ ブロックの簡単な例です。ここでは、try ブロック内に例外を生成するステートメントを記述しており、例外は 3 つの catch ブロックのうちの対応する catch ブロックによって処理されます。
コード:
public class MultipleCatchBlockInJava { public static void main(String[] args) { try{ System.out.println("start of try block"); int num = 6/0; } catch(ArithmeticException e) { System.out.println("divide by zero exception "); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("ArrayIndexOutOfBounds Exception occurs"); } catch(Exception e) { System.out.println("Any other excpetion"); } System.out.println("end of try-catch block"); } }
出力:
この例では、try および catch ブロックによる配列の範囲外例外処理について説明しました。
コード:
public class MultipleCatchBlockInJava { public static void main(String[] args) { try{ System.out.println("start of try block"); int arr[]=new int[6]; System.out.println(arr[12]); //we want to access 12th element of array which does not exist as size is of 6 } catch(ArithmeticException e) { System.out.println("divide by zero exception"); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("Array IndexOutOfBounds Exception occurs"); } catch(Exception e) { System.out.println("Any other exception"); } System.out.println("end of try-catch block"); } }
出力:
この例では、null ポインターが catch ブロックによってどのように処理されるかを見ていきます。また、try ブロックには例外の複数のシナリオがあることに注意してください。ただし、プログラム フローが最初の例外生成ステートメント (ここでは Nullpointer 例外) に到達すると、すぐに try ブロックから出て、catch ブロック内の例外ハンドラーを検索します。 try ブロック内の他の例外生成ステートメント (ここでは、範囲外の配列インデックス例外) は無視されます。
コード:
public class MultipleCatchBlockInJava { public static void main(String[] args) { try{ System.out.println("start of try block"); String str=null; System.out.println(str.length()); //we want to get length of a null string int arr[]=new int[6]; System.out.println(arr[12]); //we want to access 12th element of array which does not exist as size is of 6 } catch(ArithmeticException e) { System.out.println("divide by zero exception"); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("Array IndexOutOfBounds Exception occurs"); } catch(NullPointerException e) { System.out.println("Null pointer Exception occurs"); } System.out.println("end of try-catch block"); } }
出力:
この例では、単一の catch ブロックの複数の引数によって例外がどのように処理されるかを確認します。
コード:
public class MultipleCatchBlockInJava { public static void main(String[] args) { try{ System.out.println("start of try block"); String str=null; System.out.println(str.length()); //we want to get length of a null string int arr[]=new int[6]; System.out.println(arr[10]); //we want to access 10th element of array which does not exist as size is of 6 } catch(ArithmeticException | ArrayIndexOutOfBoundsException | NullPointerException e ) { System.out.println("Code is throwing " + e); } System.out.println("end of try-catch block"); } }
出力:
これで、Java プログラミングの観点から見た複数の catch ブロックの学習は終了です。要約すると、複数の例外を処理する必要がある場合は、それらを複数の catch ブロック内に記述できます。あるいは、Java 7 以降では、単一の catch ブロックの引数に複数の例外を記述することができ、プログラム フローが自動的にこれを選択します。また、理解を深めるために自分でコードを書くことが重要です。
以上がJava の複数の Catch ブロックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。