这是一个愚蠢的问题 - 但它让我感到困惑.
从现有的(库)Java异常中,我应该抛出以下内容.
我有一个在错误的场景中使用的方法(它的基本假设不成立).
这个方法没有参数 - 所以我倾向于跳过IllegalArgumentException.
作为一个例子 - 考虑一个BinaryNode只有两个左/右子节点的类.
为简洁起见,有一个removeOnlyChild()方法很好,只有当这个节点实际只有一个子节点(不是0或2)时才适用.
显然,如果有人调用有2 n.removeOnlyChild()个子节点的节点n,则应该抛出异常.
超出标准的Java异常 - 你认为它应该是什么,为什么?
我实际上每隔一段时间就会浏览一下这个列表,当这个弹出时,只是随身IllegalStateException携带InternalError.
我有一个在错误的场景中使用的方法(它的基本假设不成立).
这听起来像是完全匹配IllegalStateException:
表示在非法或不适当的时间调用了方法.
不可否认,"时间"部分感觉有点误导,但考虑到名称,将意义扩展为"当对象处于该呼叫处于不适当状态时已调用方法"似乎是合理的.如果迭代器在第一个元素之前或者已经删除了"current"元素Iterator.remove(),IllegalStateException则使用类似于抛出的用法.
我肯定会InternalError考虑虚拟机错误,而不是应用程序代码错误.