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

当ページのリンクには広告が含まれています。

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

目次

IllegalArgumentExceptionとは?

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

原因

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

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

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

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

解消方法

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

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

IllegalArgumentExceptionの使い方

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

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

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

まとめ

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

参考

例外はJava Silver SE 11でも取り扱う範囲となっています。
処理方法をしっかり理解して資格の取得にも挑戦してみて下さい!

最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

リーマンショックの影響で26歳の時にIT業界から離れ、紆余曲折を経て34歳でエンジニアに復帰しました。
復帰前は開発未経験でしたが、独学した知識と面接時のコミュニケーション力で見事開発エンジニアとして復帰しました!
今はフリーランスエンジニアとして仕事をしています。

■保有資格
・Java Gold SE 11

コメント

コメントする

CAPTCHA


目次