【Java】到達できないcatchブロックはコンパイルエラー

try~catchブロックを使用した例外処理でtryブロックの中で複数種類の例外が発生する場合、
例外の種類に合わせて複数のcatchブロックを書いて処理することができる。


tryブロック内の処理に対して、複数のcatchブロックを記述した例

ArithmeticException
ArrayIndexOutOfBoundsException

二つのcatchブロックで上記のどちらの例外が発生してもキャッチできるようにしている。


複数種類の例外をExceptionでまとめてキャッチする例

catchブロックに指定する例外クラスを「Exception」とする事でtryブロックで発生するすべての種類の例外に対応することが出来る。(12行目)
(すべての例外クラスのスーパークラスはExceptionクラスであるため。)


特定の例外は例外クラス名を明示的に書き、それ以外の例外はExceptionでキャッチする例

ArithmeticException以外の例外はExceptionでまとめてキャッチする。

実行結果 (コンソールに出力)

5
例外が発生しました

 

注意 catchブロックへ到達不能となりコンパイルエラーとなる例

上記のように特定の例外(今回はArithmeticException)をキャッチするcatchブロックより前にあるcatchブロックにExceptionが指定されている場合、tryブロック内の全ての処理が初めのcatchブロックで処理されてしまう。

よって、後ろのcatchブロックは到達不能でコンパイルエラーとなる。

Follow me!

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください