複数の catch ブロックを記述する場合、継承関係の「子クラス(具体的な例外)」を前に、「親クラス(汎用的な例外)」を後に配置しなければならないという絶対ルールが存在します。
もし catch (Exception e) を catch (NullPointerException e) より前に書いてしまうと、すべての例外が前の Exception に捕獲されてしまい、後ろの NullPointerException ブロックが到達不可能(Unreachable)になるためコンパイルエラーが発生します。
また、finally ブロックは try や catch 内で return 文が実行された場合であっても、メソッドから抜ける直前に必ず割り込んで実行されるという強力な優先権を持っています(※例外的に System.exit(0) でJVMが強制終了された場合のみ実行されません)。
試験でのポイント