IllegalStateException 的预期用途是什么?
这是在今天与一位同事的讨论中提出的。
Javadocs for Java's IllegalStateException
指出:
在非法或不适当的时间调用方法的信号。换句话说,Java 环境或 Java 应用程序未处于适合所请求操作的状态。
有效的Java说(项目60,第248页):
另一个经常被重用的例外是 IllegalStateException。如果由于接收对象的状态而调用是非法的,则这通常是要引发的异常。例如,如果调用方在正确初始化某个对象之前尝试使用该对象,则将引发异常。
这里似乎有一点差异。javadocs的第二句话听起来像是异常可以描述关于Java执行状态的非常广泛的条件,但是有效Java中的描述使它听起来像是用于专门与调用其方法的对象的状态状态相关的条件。
我在JDK(例如集合)和番石榴中看到的用法似乎绝对属于有效Java所谈论的类别(“此对象处于无法调用此方法的状态”)。这似乎也与 的兄弟姐妹一致。Matcher
IllegalStateException
IllegalArgumentException
JDK 中是否有任何与“Java 环境”或“Java 应用程序”相关的合法用法?或者是否有任何最佳实践指南主张将其用于更广泛的执行状态?如果不是,为什么javadocs是这样说的?;)IllegalStateException