これは、今日同僚との議論で出てきました。
Java の Javadocs には、次のように記載IllegalStateException
されています。
メソッドが不正または不適切なタイミングで呼び出されたことを示します。つまり、Java 環境または Java アプリケーションは、要求された操作に適した状態ではありません。
また、Effective Java は次のように述べています (項目 60、248 ページ)。
よく再利用される別の例外は、IllegalStateException です。これは通常、受信オブジェクトの状態が原因で呼び出しが不正である場合にスローされる例外です。たとえば、これは、適切に初期化される前に呼び出し元が何らかのオブジェクトを使用しようとした場合にスローされる例外です。
ここは少しズレがあるようです。javadocs の 2 番目の文は、例外が Java 実行状態に関する非常に広範な条件を説明できるように聞こえますが、Effective Java の説明は、オブジェクトの状態の状態に特に関連する条件に使用されるように聞こえます。メソッドが呼び出されました。
JDK (コレクションなどMatcher
) と Guava で見た使用法は、間違いなく、Effective Java が話しているカテゴリに分類されるようです (「このオブジェクトは、このメソッドを呼び出すことができない状態にあります」)。IllegalStateException
これはの兄弟とも一致しているようIllegalArgumentException
です。
IllegalStateException
「Java 環境」または「Java アプリケーション」に関連する JDK の正当な使用法はありますか? または、より広範な実行状態に使用することを推奨するベスト プラクティス ガイドはありますか? そうでない場合、なぜ javadocs はそのように表現されているのでしょうか? ;)