これは今日の同僚とのディスカッションのなかに現れました。この方法は、違法または不適切なときに呼び出されましたIllegalStateExceptionの目的は何ですか?
シグナル:
Javaの
IllegalStateException
状態のJavadocそれという。言い換えれば、Java環境またはJavaアプリケーションは、要求された操作に適切な状態ではありません。
かつ効果的なJavaは言う(項目60、ページ248):
別の一般的な再利用の例外は、IllegalStateExceptionがあります。これは一般に、受信オブジェクトの状態のために呼び出しが不正である場合にスローする例外です。たとえば、呼び出し元が適切に初期化される前にオブジェクトを使用しようとすると、例外がスローされます。
ここには少し矛盾があるようです。 javadocの2番目の文は、例外がJavaの実行状態に関する非常に広い条件を記述できるように思えますが、Effective Javaの記述は、オブジェクトの状態の状態に特有の条件メソッドが呼び出されました。
JDK(コレクション、Matcher
など)やGuavaで使用されている使用法は、有効なJavaが話すカテゴリに該当するようです。「このオブジェクトはこのメソッドを呼び出すことができない状態です")。これはIllegalStateException
の兄弟IllegalArgumentException
と一貫しているようです。
「Java環境」または「Javaアプリケーション」に関連する合法的なIllegalStateException
の使用はJDKにありますか?または、ベストプラクティスガイドで広範な実行状態で使用することを推奨しますか?もしそうでなければ、なぜそのような言い方をしているjavadocは何ですか? ;ここでは)
StackOverflowの[illegalstatexception]タグには、「Javaでは、複数のスレッドを使用すると例外が発生し、1つのスレッドがそのオブジェクトの使用と互換性のない方法でオブジェクトを変更するという例外がありますオブジェクトを違法な状態にすることになります。ハァッ?これはどこから来たのですか? –
"Javaアプリケーション"はあなたが書いたものであり、そこに 'IllegalStateException'を直接(あるいはあなたがGuavaを使っているので)使うことができます。不一致はどこですか? –
タグwikiが偽装しています。私はこの質問から自由に借用して編集を提出しました。ピアレビューに合格したら新しいバージョンが表示されます。 – meriton