什么例外 - “错误的场景”(Java)

时间:2013-12-02 22:27:50

标签: java exception

这是一个愚蠢的问题 - 但它让我感到烦恼 从现有的(库)Java异常中,我应该抛出以下内容 我有一个在错误场景中使用的方法(它的基本假设不成立) 这个方法没有参数 - 所以我倾向于跳过IllegalArgumentException

作为示例 - 考虑只有两个左/右子节点的BinaryNode类。

为简洁起见,有一个removeOnlyChild()方法很好,仅当此节点实际上只有一个子节点(不是0或2)时才适用。 显然,如果某人在有{2个子节点的节点n.removeOnlyChild()上调用n,则应抛出异常。
超出标准的Java异常 - 你认为它应该是什么,为什么?

我实际上每隔一段时间浏览一下这个列表,当弹出这个时,只需使用IllegalStateExceptionInternalError

1 个答案:

答案 0 :(得分:8)

  

我有一个在错误场景中使用的方法(它的基本假设不成立)。

这听起来像IllegalStateException完全匹配:

  

表示在非法或不适当的时间调用了某个方法。

不可否认,“时间”部分感觉有点误导,但考虑到名称,将意义扩展为“当对象处于该呼叫处于不适当状态时已调用方法”似乎是合理的。如果迭代器在第一个元素之前或者已经删除了“current”元素,那么你的使用类似于Iterator.remove()的抛出IllegalStateException

我肯定会使用InternalError来解决虚拟机错误,而不是应用程序代码错误。