今天在与同事的讨论中提出了这一点。
Javadocs for JavaIllegalStateException
指出:
表示已在非法或不适当的时间调用了方法。换句话说,对于所请求的操作,Java环境或Java应用程序没有处于适当的状态。
而有效的Java说(第248页的第60项):
另一个通常重用的异常是IllegalStateException。如果由于接收对象的状态而调用是非法的,通常会抛出异常。例如,如果调用者在正确初始化某个对象之前尝试使用该对象,则将引发异常。
似乎这里有些差异。javadocs的第二句话听起来像是异常可以描述关于Java执行状态的非常广泛的条件,但是Effective Java中的描述听起来像是它用于特定于对象状态的条件,该对象的状态方法已被调用。
我在JDK(例如collections Matcher
)和Guava中看到的用法肯定似乎属于Effective Java所谈论的类别(“此对象处于无法调用此方法的状态”)。这似乎也与IllegalStateException
的兄弟姐妹一致IllegalArgumentException
。
IllegalStateException
JDK中是否有任何与“ Java环境”或“ Java应用程序”相关的合法用法?还是有任何最佳实践指南倡导将其用于更广泛的执行状态?如果不是这样,为什么javadocs这样写呢?;)
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.
。??这是哪里来的?