Javaアプリケーション開発では「想定外の入力」に対して適切にエラーを発生させ、プログラムの異常動作を防ぐことが重要です。その際によく使用される例外のひとつが IllegalArgumentException です。
本記事では、IllegalArgumentException の意味、発生するケース、使い方の例、そして例外設計のベストプラクティスまで徹底解説します。
IllegalArgumentExceptionとは?
IllegalArgumentException とは、
メソッドに不正な引数(値)が渡された場合にスローされる実行時例外(RuntimeException)
です。
例えば、年齢を受け取るメソッドに 負の値 が渡された場合など、
「引数の値が意味を成していない」状態で使われます。
なぜIllegalArgumentExceptionを使うのか?
✔ 不適切な入力を早期に検知
✔ 異常な状態を防ぎ、予測可能な動作を保証
✔ 開発者や利用側に明確なフィードバック
特に、ライブラリ・APIの開発時には重要です。
「どんな値が許容されるのか?」を明確にすることで利用者のミスを防げます。
IllegalArgumentExceptionの基本例
✅ 正の値のみ受け付けるメソッド例
チェックポイント
-
条件式で検証
-
明確なメッセージで何が悪いか伝える
Integerチューター:標準APIにも見る例
Java標準APIも積極的にこの例外を使っています。
例:Thread#setPriority(int priority)
Java公式の一貫性ある設計に従うことで、コード品質が向上します。
IllegalArgumentException vs 他の例外
| 例外 | 使う場面 |
|---|---|
| IllegalArgumentException | 引数の値が不正 |
| NullPointerException | 引数がnull不可なのにnull |
| IllegalStateException | オブジェクトの状態が不正 |
| IOException | I/O操作中の問題 |
ポイント
-
値がおかしい→
IllegalArgumentException -
状態がおかしい→
IllegalStateException
ベストプラクティス:例外設計ガイド
✅ 1. 早めにチェックする(Fail Fast)
異常はできるだけ早く発見しましょう。
✅ 2. メッセージで原因を明示
悪い例(NG)
何が悪いのか分からない…
✅ 3. Javadocで事前に仕様を明記
APIの信頼性が向上します。
✅ 4. nullチェックはObjects.requireNonNullで簡潔に
ユースケース:バリデーションロジックの整理方法
例外処理が肥大化しないよう、専用バリデータクラスを作るアプローチも有効です。
利用例:
まとめ
| ポイント | 内容 |
|---|---|
| 例外名 | IllegalArgumentException |
| 意味 | 不正な引数が渡された |
| 目的 | 予期しない動作を防ぐ |
| コツ | Fail Fast、明確なメッセージ、仕様明記 |
良い例外設計はコードの信頼性・保守性を大きく高めます。
実務でも積極的に活用していきましょう!
