プログラミング

【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】TreeSetの使い方(順序付けSet)

TreeSetの使い方 基本的な使い方はHashSetと同じなので、以下を参照下さい。 【Java】HashSetの使い方いろいろ TreeSetは何も指定せずにインスタンスを生成すると、Collec …

【Java】Stringのequalsで定数を左側にする理由

JavaのStringでequalsによる等価判定を行う場合に、 比較対象となる定数は左側にする理由はNullPointerExceptionを回避するためです。 以降、NullPointerExce …

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

概要 Supplierとは供給者という意味です。 その名の通り、引数を取らずに戻り値を受け取ります。   基本的な使い方 Supplier<T> getメソッドによってT型の結果を受け取り …

ExcelをA1セルに揃えて拡大率100%にするツール

(追記:2021年8月18日) サブフォルダを処理対象にするかどうかを選択できるように改修しました。   たくましゅくじょさんのところで公開されていた、 「エクセルで全シートの拡大率を100%にしA1 …

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

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

SpringFramworkの良書

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

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