Cela est arrivé lors d'une discussion avec un collègue aujourd'hui.
La Javadoc de Java IllegalStateException
état de:
Les signaux qu'une méthode a été appelée à une illégales ou inappropriées temps. En d'autres termes, l'environnement Java ou Java application n'est pas dans un état approprié à l'opération demandée.
Et Efficace Java indique (Article 60, page 248):
Un autre souvent réutilisés exception IllegalStateException. C'est généralement à l'exception de jeter si l'invocation est illégale en raison de l'état de l'objet récepteur. Par exemple, ce serait l'exception à jeter si l'appelant a tenté d'utiliser un objet avant qu'il ait été correctement initialisé.
Il semble qu'il ya un peu de différence ici. La deuxième phrase de la javadoc le fait ressembler à l'exception peut décrire une très large condition sur le Java état de l'exécution, mais la description Effective de Java fait sonner comme il est utilisé dans des conditions particulièrement liée à l'état de l'état de l'objet dont la méthode a été appelée.
Les usages que j'ai vu dans le JDK (par exemple, les collections, Matcher
) et dans la Goyave certainement l'impression de tomber dans la catégorie que l'efficacité de Java parle ("Cet objet est dans un état où cette méthode ne peut pas être appelé"). Cela semble également compatible avec IllegalStateException
's de la fratrie IllegalArgumentException
.
Sont-il légitime IllegalStateException
usages dans le JDK qui ne se rapportent à la "environnement Java" ou "Java application"? Ou faire des guides sur les pratiques exemplaires défenseur de l'utiliser pour l'ensemble de l'état de l'exécution? Si non, pourquoi diable sont les javadocs formulé comme ça? ;)