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();//この行でコンパイルエラー
以上で記事の解説はお終い!
もっとJavaやSpringを勉強したい方にはUdemyがオススメ!同僚に差をつけよう!