【Java入門】try-catch文で複数のcatchブロックを1つにまとめるマルチキャッチの使い方

【Java入門】マルチキャッチ

try-catch文で複数のcatchブロックを1つにまとめるには、マルチキャッチという機能を使います。

書き方

複数の例外を「|」で区切って列挙し、最後に例外型変数を1つだけ記述します。

Java

try{
    x();
}catch (NumberFormatException | ParseException e){
    //例外処理
}catch (SQLException | IOException e){
    //例外処理
}catch (Exception e){
    //例外処理
}

コンパイルエラーになる書き方

例外型変数を最初に記述する

以下のように例外型変数を最初に記述するとコンパイルエラーになります。

Java

catch (NumberFormatException e | ParseException )

例外型変数を2つ記述する

例外型変数は1つだけしか記述できないため、以下のように2つ記述した場合はコンパイルエラーになります。

Java

catch (NumberFormatException e1 | ParseException e2)

同じ例外型を複数記述する

同じ例外型を複数記述するとコンパイルエラーになります。

Java

catch (IOException | IOException e)

ポリモーフィックな関係にある例外型を1つのcatchブロックに含める

継承関係の例外型を1つのcatchブロックの引数に記述するとコンパイルエラーになります。

Java

catch (IOException | Exception e)

つまり、ポリモーフィックな同一例外型を1つのmulti-catch文に記述することは出来ません。

例外型変数を再代入する

multi-catchブロックの引数で宣言された変数は暗黙的にfinalとなり、再代入することはできないため、再代入しようとするとコンパイルエラーになります。

Java

}catch (SQLException | IOException e){
    e = e.getCause();//この行でコンパイルエラー

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です