■ 非検査例外(Unchecked Exception)
-
代表例:
NullPointerException
、IllegalArgumentException
、IndexOutOfBoundsException
など -
特徴:
- コンパイル時に例外処理を強制されない(
try-catch
やthrows
が不要) - プログラムのバグや設計ミスが原因で発生するケースが多い
- コンパイル時に例外処理を強制されない(
-
対応方針:
- 発生を前提にせず、**事前にチェックして防ぐ(バリデーションなど)**ことが基本
- 発生した場合は、リカバリよりも修正対象として扱うことが多い
■ 検査例外(Checked Exception)
-
代表例:
IOException
、SQLException
、ParseException
など -
特徴:
- コンパイル時に例外処理が必須(
try-catch
またはthrows
が必要) - 外部環境やI/Oに依存する処理に対して用いられる
- コンパイル時に例外処理が必須(
-
対応方針:
-
try-catch
でハンドリングするか、呼び出し元に投げる(throws
) - 呼び出し側に「この処理は失敗する可能性がある」と明示的に知らせる意図
-
設計段階から「起きるべきでないもの」と「起きうる前提のもの」を切り分ける姿勢が重要