🚨

Javaの例外処理:基本と体系的な整理

に公開

✅ Javaの例外処理 概要まとめ

1️⃣ レガシー方式の例外処理(昔のやり方)

  • 条件文(if)で1つずつチェックしてエラーを処理
  • 例外が発生しても throw を使わず、直接メッセージを出力
  • コードが長くなり、if文のネストで可読性が悪化
  • 保守性が低い

2️⃣ OOP方式の例外処理(オブジェクト指向)

  • 条件を関数に分け、問題があれば throwで例外を投げる
  • 呼び出し元では try-catch でまとめて処理
  • 可読性・保守性・再利用性が向上

✅ Checked例外 vs Unchecked例外

分類 Checked Exception Unchecked Exception
意味 コンパイル時に処理が強制 コンパイル時の処理は任意
IOException, SQLException NullPointerException, ArithmeticException
発生原因 外部リソースの問題(ファイル、DBなど) 開発者のミスや論理エラー
処理方法 必ず throws または try-catch が必要 処理しなくてもコンパイル可能
親クラス Exception RuntimeException

✅ Errorはどこに分類される?

  • ErrorException ではない → Throwable の別の子クラス
  • 復旧不可能なシステムエラー(例:OutOfMemoryError, StackOverflowError
  • try-catch で捕捉することは可能だが、基本的には推奨されない
  • 発生するとプログラムはそのまま終了する

✅ 全体の階層構造まとめ

Object
 └── Throwable
      ├── Exception         ← 復旧可能(例外処理対象)
      │     ├── Checked     ← try-catch または throws が必要
      │     └── Unchecked   ← コンパイラの強制なし
      └── Error             ← 復旧不可能、処理は非推奨

✅ 全体まとめ

最初はレガシー方式で if 文を使って例外処理をしていたが、
コードが長くなり、可読性も悪く、保守もしづらかった。
その後、OOP方式に切り替え、throw で例外を発生させ、
try-catch で一括して処理することで構造がすっきりした。
例外は CheckedUnchecked に分かれ、
Checked は必ず例外処理が必要、
Unchecked は実行時に発生するため任意で処理できる。
さらに Error は復旧できないシステムレベルの例外であり、
多くの場合プログラムは強制終了する。

Discussion