Dies kam heute in einem Gespräch mit einem Kollegen zum Ausdruck.
Die Javadocs für Java IllegalStateException
geben an, dass es:
Signalisiert, dass eine Methode zu einem illegalen oder unangemessenen Zeitpunkt aufgerufen wurde. Mit anderen Worten, die Java-Umgebung oder Java-Anwendung befindet sich nicht in einem geeigneten Zustand für die angeforderte Operation.
Und Effective Java sagt (Punkt 60, Seite 248):
Eine weitere häufig wiederverwendete Ausnahme ist IllegalStateException. Dies ist im Allgemeinen die Ausnahme, die ausgelöst wird, wenn der Aufruf aufgrund des Status des empfangenden Objekts unzulässig ist. Dies wäre beispielsweise die Ausnahme, die ausgelöst werden muss, wenn der Aufrufer versucht hat, ein Objekt zu verwenden, bevor es ordnungsgemäß initialisiert wurde.
Es scheint, dass es hier ein bisschen Diskrepanz gibt. Der zweite Satz der Javadocs lässt es so klingen, als könnte die Ausnahme eine sehr breite Bedingung über den Java-Ausführungsstatus beschreiben, aber die Beschreibung in Effective Java lässt es so klingen, als würde es für Bedingungen verwendet, die sich speziell auf den Zustand des Zustands des Objekts beziehen, dessen Methode wurde aufgerufen.
Die Verwendungen, die ich im JDK (z. B. Sammlungen Matcher
) und in Guava gesehen habe, scheinen definitiv in die Kategorie zu fallen, über die Effective Java spricht ("Dieses Objekt befindet sich in einem Zustand, in dem diese Methode nicht aufgerufen werden kann"). Dies scheint auch im Einklang mit IllegalStateException
dem Geschwister zu stehen IllegalArgumentException
.
Gibt es IllegalStateException
im JDK legitime Verwendungen, die sich auf die "Java-Umgebung" oder die "Java-Anwendung" beziehen? Oder befürworten Best Practices-Anleitungen die Verwendung für den breiteren Ausführungsstatus? Wenn nicht, warum zum Teufel sind die Javadocs so formuliert? ;)
In Java, an exception that occurs when using multiple threads, whereby one thread modifies an object in a way that makes it incompatible with the use of that object in the second thread, thus putting the object into an illegal state.
. Huh? Woher kommt das?