Java等同于.NET System.InvalidOperationException


77

我对Java的异常包不如.NET那样熟悉。我处于一种情况,如果使用C#编程,我会抛出System.InvalidOperationException

在创建自己的java.lang.RuntimeException子类之前,我需要知道是否应该在Java中抛出类似的异常类型。

确切的情况是:

我的类是一个提供int intValue()方法的值对象,该方法返回一个int值。但是,在某些情况下,当前值不能作为int提供,因此此类还提供了一个boolean isInteger()允许API用户知道何时intValue()可以安全地调用它们的方法。

如果主叫用户呼叫intValue()isInteger()false一个异常应该被抛出。

问题是:什么类型的异常?

我知道这个问题可能没有正确的答案,但是考虑到我在设计Java API方面没有太多经验,我想从其他Java开发人员那里了解他们在这种情况下可能会遇到的问题。

谢谢


Answers:


88

抛出IllegalStateException

表示已在非法或不适当的时间调用了方法。换句话说,对于所请求的操作,Java环境或Java应用程序没有处于适当的状态。


13
IllegalStateException对于所询问的特定情况绝对是正确的。请注意,在某些情况下,我认为抛出可能更合适UnsupportedOperationException。例如,如果Iterator不支持该remove方法。
csauve
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.