Java の複数の Catch ブロック

王林
リリース: 2024-08-30 15:11:46
オリジナル
472 人が閲覧しました

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
}
ログイン後にコピー

Java での Catch ブロックの仕組み

最初に、catch ブロックに移動する前に try ブロックをチェックする必要があります。

1.ブロックしてみてください

これには、例外が発生する可能性のあるコード スニペットが含まれています。したがって、コードで例外が発生する可能性があると思われる場合は、そのコード スニペットを try ブロック内に配置してください。 try ブロックには少なくとも 1 つの catch ブロックが必要です。

2.キャッチブロック

これには、対応する try ブロック内に記述されたコードで発生する可能性のある例外を処理するコード スニペットが含まれています。複数の例外があった場合、どのように対処すればよいでしょうか?

次の 2 つの方法があります:

  • Try ブロックに複数の Catch を使用する: ここでは、対応する Try ブロックの複数の Catch ブロックで複数の例外を処理できます。プログラム フローは自動的に catch ブロックに 1 つずつ到達し、例外に従って対応する catch ブロックが見つかり、それに応じて処理されます。
  • Catch ブロックの引数で複数の Catch ステートメントを使用する: この機能は Java 7 から来ています。ここでは、対応する try ブロックの (パイプ記号で区切られた) 1 つの catch ブロックで複数の例外を処理できます。プログラム フローは自動的に catch ブロックに到達し、catch ブロックの引数内の対応する例外が try ブロックで検出され、それに応じて処理されます。

コンストラクター

コンストラクター内に 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();
}
}
ログイン後にコピー

出力:

Java の複数の Catch ブロック

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

このセクションでは、多くのコード例について説明します。このコードを自分で試して、指定されたコードで出力を集計する必要があります。

例 #1

これは、マルチキャッチ ブロックの簡単な例です。ここでは、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");
}
}
ログイン後にコピー

出力:

Java の複数の Catch ブロック

例 #2

この例では、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");
}
}
ログイン後にコピー

出力:

Java の複数の Catch ブロック

例 #3

この例では、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");
}
}
ログイン後にコピー

出力:

Java の複数の Catch ブロック

例 #4

この例では、単一の 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 ブロック

結論

これで、Java プログラミングの観点から見た複数の catch ブロックの学習は終了です。要約すると、複数の例外を処理する必要がある場合は、それらを複数の catch ブロック内に記述できます。あるいは、Java 7 以降では、単一の catch ブロックの引数に複数の例外を記述することができ、プログラム フローが自動的にこれを選択します。また、理解を深めるために自分でコードを書くことが重要です。

以上がJava の複数の Catch ブロックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!