Was ist der Verwendungszweck von IllegalStateException?

Dieser kam in eine Diskussion mit einer Kollegin heute.

Den Javadocs für Java IllegalStateException behaupten, dass es:

Signale, dass eine Methode aufgerufen wurde, die auf eine rechtswidrige oder unangemessene Zeit. In anderen Worten, die Java environment oder Java-Anwendung ist nicht in einem geeigneten Zustand für den angeforderten Vorgang.

Und Effektive Java-sagt (Item 60, Seite 248):

Anderen Häufig wiederverwendet Ausnahme IllegalStateException. Dies ist in der Regel die Ausnahme zu werfen, wenn der Aufruf ist illegal, weil der Staat das empfangende Objekt. Zum Beispiel, das wäre die Ausnahme, wenn der Aufrufer versucht, auf ein Objekt, bevor es wurde richtig initialisiert.

Scheint es da ein wenig Diskrepanz hier. Der zweite Satz des javadocs macht es klingen wie die Ausnahme könnte beschreiben ein sehr breites Zustand, der von der Java-Ausführung Zustand, aber die Beschreibung im Wirksamen Java macht es klingen wie es ist verwendet werden, für die Bedingungen im Zusammenhang speziell auf den Zustand der Zustand des Objekts, dessen Methode aufgerufen wurde.

Den Gepflogenheiten, die ich gesehen habe in der JDK (z.B. Sammlungen, Matcher) und Guave definitiv scheinen, fallen in die Kategorie, die Effektive Java-Gespräche über ("Das Objekt ist in einem Zustand, wo diese Methode kann nicht aufgerufen werden"). Dies scheint auch im Einklang mit IllegalStateException's Geschwister IllegalArgumentException.

Gibt es irgendwelche legitime IllegalStateException Nutzungen im JDK, die beziehen sich auf die "Java environment" oder "Java-Anwendung"? Oder irgendwelche best-practices-guides plädieren für den breiteren Ausführung-Zustand? Wenn nicht, warum zum Teufel sind die javadocs formuliert? 😉

InformationsquelleAutor der Frage Andrew McNamee | 2012-10-02

Schreibe einen Kommentar