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