プログラミング

【Java】IllegalArgumentExceptionの原因と対策方法

投稿日:

IllegalArgumentExceptionの原因と対策方法はとても簡単です。
基本的なことを理解すればすぐに解消できます。

IllegalArgumentExceptionとは?

不正な引数または不適切な引数をメソッドに渡したことを示すためにスローされる例外です。
例えば、0以上の値が渡されるべきなのに、負数が渡されるとスローされるといったものです。

原因

具体的なコードで発生原因を確認していきましょう。

■発生させるコード
例としてFileクラスのsetLastModifiedメソッドに「-1」をセットします。

■実行結果
そうすると、IllegalArgumentExceptionが発生します。

■原因
原因は、setLastModifiedメソッドでは0より小さい数値に対してIllegalArgumentExceptionを発生させるようにしていたからです。

解消方法

IllegalArgumentExceptiongが発生しない条件の値をメソッドに渡してあげることです。
上記の例だと、setLastModifiedTimeメソッドに0以上の値を渡せば問題ありません。

IllegalArgumentExceptiongが発生した場合、発生箇所はスタックトレース(■実行結果のような出力)で確認できますし、発生箇所も書いてあるので追うことは簡単です。
発生条件も書いてあるので、不適切な値が入らないようにしてあげればよいだけですね。

IllegalArgumentExceptionの使い方

独自のクラスを作って、その中でIllegalArgumentExceptionを発生させたいときは以下のようにします。

■使い方の例
例外発生時のメッセージ有無と、原因となる例外を渡すか否かを組み合わせた4パターンがあります。

基本的にはIllegalArgumentExceptionにメッセージを付けるだけのパターンが多いと個人的には認識しています。
発生原因となっている詳細が必要な場合には、上記の例のように新規例外を設定してあげるとよいので必要に応じて使い分けるようにして下さい。

まとめ

  • IllegalArgumentExceptionとは不正な引数または不適切な引数をメソッドに渡したことを示すためにスローされる例外
  • 原因はメソッドに不正な値が入ったことによるもの
  • 解消方法は発生箇所から追って行き、適切な値を確認して、渡される値を制御する
  • 独自クラスで例外をスローすることは可能
    また、スロー時はメッセージ有無と原因となる新規例外の設定有無を選択できる

参考

こちらは例外について理解を深めたい方向けの書籍です。
Javaプログラム: 不朽のJava哲学

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-プログラミング

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

【Java】ArrayListの使い方まとめ

概要 ArrayListはOracleの公式ページでも明記しているクラスです。 Java SE 11 Programmer I (1Z0-815-JPN) 試験 インタフェースによる抽象化 インタフェ …

【Java入門】Functionの使い方まとめ

概要 Function <T, R> apply(T)を関数メソッドに持つ関数型インタフェースです。 1つの引数を受け取って結果(R)を返します。   基本的な使い方 Functionイン …

フロントエンジニアとバックエンドエンジニアのどちらになるべきか?

対象読者 ・これからWebエンジニアを目指す人 ・フロントエンジニアとバックエンドエンジニアの違いを知らない人   フロントエンジニアかバックエンドエンジニアか? ・役割から考える フロント …

プログラミングを上達させるために私がやってきたこと・やっていること

私の上達過程 写経 自分のレベルに合う本をもとに写経しては、コードの意味を調べて理解し、少しづつ体に染み込ませるように身に着けていきました。 とにかく初心者のころは右も左も分からず、ちょっとしたエラー …

【Spring+Thymeleaf】HTMLの更新をビルドせずに反映させる方法

概要 Spring + Thymeleafの構成において、ビルド無しでHTMLの変更を反映する方法です。 前提 以下の構成で確認したものになります。 ・SpringBoot 2.6.4 ・Thymel …

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。