如果方法不适合当前对象,则要投掷哪个例外



如果该方法不适合当前对象,您会投掷哪个例外?

例如,在我的情况下,我写了一个名为Interval的类,该类代表时间间隔。该课程还承认空间间隔(没有单个时间点是此间隔的元素)。现在,我想实现一种返回时间点的方法,该时间点是此间隔的元素。当然,只有当间隔是非空的时才才有可能。那么,如果它是空的,我必须投掷哪个例外?

编辑:我总是在类似情况下丢弃的例外是IllegalArgumentException。但是在这种情况下,由于我的方法没有参数,因此它不合适。在某种意义上,这是对方法的非法对象。

UnsupportedOperationExceptionArithmeticException

UnsupportedOperationException是"收藏的一部分",但AWT和Nio子类均为IT。

您也可以像EmptyIntervalException extends RuntimeException这样的特殊情况例外。如果没有完美的合适,则没问题。

我认为没有人会发现IllegalargumentException造成混淆,但是您也可以尝试 IllegalstateException

表明在非法或不合适的时间调用了一种方法。换句话说,Java环境或Java应用程序不适合所请求的操作。

在这种情况下,这是处于非法状态的间隔,即设置为空时间段。

您可以将方法投掷 IllegalArgumentException

投掷以表明一种方法已经通过了非法或不适当的论点。

编辑:

澄清说该方法无法在实例本身上调用,然后您可以写自己的异常,例如EmptyIntervalException。或者,如果Interval对象可以从状态更改为另一个状态(例如,从空白到非空),则IllegalStateException将是一个不错的选择。

如果该参数无效,我会扔一个illegalargumentException。

如果是无效的对象的状态,则可以使用InvalidStateException

最好的选择是,如果该方法无效,请从本实例中删除该方法。您可以拥有实现此方法的类型/接口,而另一种方法则不能,其中编译器可以检测到您无法调用该方法。

另一个选项是让该方法返回nullNoSuchTime对象。这取决于您的预期用例。

最新更新