如果出现以下情况,您会抛出IllegalStateException吗?

  • 由于一个或多个字段的值,该方法无法完成其工作
  • 这些字段是final,仅在构造函数中分配?

  • 教科书示例:您的类是一个不变的Collection<BigInteger>,您的方法应该返回最大元素,但是此实例为空。

    我已经阅读过有关该主题的Kevin Bourillon`s blog post,但不确定哪个规则适用。



    当然不。此类的许多实例都不为空,并且该操作将成功。



    不完全的。该实例的长度为零,因此该实例不是,也永远不可能是非空的。



    如果所讨论的参数是隐式this参数,则可能适用。这是我很想抛出的异常(exception),但我担心它可能会造成混淆。

    更新:将示例从Collection<Integer>更改为Collection<BigInteger>,因为存在标识元素(Integer.MIN_VALUE)的事实使问题分散了注意力。

    最佳答案

    我认为IllegalStateException在这里合适。如果实例的构造正确,则该实例可能处于正确的状态(即“为时已晚”部分)。

    10-08 18:54