如果该方法不适合当前对象,您会投掷哪个例外?
例如,在我的情况下,我写了一个名为Interval
的类,该类代表时间间隔。该课程还承认空间间隔(没有单个时间点是此间隔的元素)。现在,我想实现一种返回时间点的方法,该时间点是此间隔的元素。当然,只有当间隔是非空的时才才有可能。那么,如果它是空的,我必须投掷哪个例外?
编辑:我总是在类似情况下丢弃的例外是IllegalArgumentException
。但是在这种情况下,由于我的方法没有参数,因此它不合适。在某种意义上,这是对方法的非法对象。
UnsupportedOperationException
, ArithmeticException
。
UnsupportedOperationException
是"收藏的一部分",但AWT和Nio子类均为IT。
您也可以像EmptyIntervalException extends RuntimeException
这样的特殊情况例外。如果没有完美的合适,则没问题。
我认为没有人会发现IllegalargumentException造成混淆,但是您也可以尝试 IllegalstateException
表明在非法或不合适的时间调用了一种方法。换句话说,Java环境或Java应用程序不适合所请求的操作。
在这种情况下,这是处于非法状态的间隔,即设置为空时间段。
您可以将方法投掷 IllegalArgumentException
:
投掷以表明一种方法已经通过了非法或不适当的论点。
编辑:
澄清说该方法无法在实例本身上调用,然后您可以写自己的异常,例如EmptyIntervalException
。或者,如果Interval
对象可以从状态更改为另一个状态(例如,从空白到非空),则IllegalStateException
将是一个不错的选择。
如果该参数无效,我会扔一个illegalargumentException。
如果是无效的对象的状态,则可以使用InvalidStateException
。
最好的选择是,如果该方法无效,请从本实例中删除该方法。您可以拥有实现此方法的类型/接口,而另一种方法则不能,其中编译器可以检测到您无法调用该方法。
另一个选项是让该方法返回null
或NoSuchTime
对象。这取决于您的预期用例。