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

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

IllegalStateExceptionとは?



IllegalStateException は、オブジェクトの状態がメソッドの呼び出しに適していない場合に発生する例外です。主に「オブジェクトが期待される状態になっていないのに操作を試みた」ケースでスローされます。

原因

IllegalStateException が実装されているコードの例です。

以下のように、状態をチェックした時に想定した状態になっていないとスローされるようになっています。

IllegalStateException は実行時例外なので、アプリケーション実行時に起こります。検査例外ではないのでコンパイルでは気づけません。

解消方法

不正な状態での操作をやめるしかありません。

手順:

  • 発生時の状態がどのようになっていたかを調査する。
    • 例外が発生した箇所をスタックトレースで特定する。
    • ログが出ていれば調査は簡単だが、出てなければログを追加する。
  • 実装を修正する。
    • 不正な状態にならないようにプロダクトコードを修正する。
    • テストをコードを書いて例外が発生しないことを確認する。

IllegalStateExceptionの使い方

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

使い方の例

1. 例外をスローするクラス

    2. 呼び出すクラス

    3. 実行結果

    Exception in thread "main" java.lang.IllegalStateException: 不正な状態です。state: false
    at org.exception.MyClass.doAction(MyClass.java:20)
    at org.exception.Main.main(Main.java:6)

    ポイント

    例外を実装する場合、必ずエラーメッセージを出力するようにしてください。

    また、エラーメッセージにはエラーの特定や解決につながる情報を含めるようにしてください。

    まとめ

    • IllegalStateExceptionは不正な操作が行われた際にスローされる例外である。
    • 原因の調査ができるようにログ出力されるようにしておくことが望ましい。
    • 独自に例外を実装する場合は、必ずエラーメッセージを出力すること。

    スキルアップ

    例外はJava Silver で取り扱っています。
    処理方法をしっかり理解して、資格の取得にも挑戦してみて下さい。

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

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

    この記事を書いた人

    リーマンショックの影響で26歳の時にIT業界から離れ、紆余曲折を経て34歳でエンジニアに復帰。
    現在はフリーランスエンジニア兼コアファクトリ合同会社代表。
    得意な言語はJava。

    新人教育経験あり(わからなくて進まない子を放置しない方針)
    Javaの新人教育にお困りでしたらお声がけください。

    ■保有資格
    ・Java Gold SE 11

    コメント

    コメントする

    CAPTCHA


    目次