2010-08-01 68 views
63

我不熟悉Java的异常包和.NET的异常包。我处于一种情况,如果用C#编程,我会抛出System.InvalidOperationException与.NET相当的Java System.InvalidOperationException

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

确切的情形是:

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

如果调用者在isInteger()false时调用intValue(),应抛出异常。

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

我知道这个问题可能没有正确答案,但考虑到我没有很多的经验设计的Java API,我想从其他的Java开发者知道他们会期望在此抛出什么场景。

感谢

+0

的可能重复[是否有一个相当于Java C#的出现InvalidOperationException的?](http://stackoverflow.com/questions/3165701/is-there-a-java-equivalent-of-cs-invalidoperationexception) – Carl 2013-06-11 14:02:51

回答

72

抛出IllegalStateException:一个方法已在非法或不适当的时间调用

信号。 换句话说,对于请求的 操作,Java环境 或Java应用程序不在 适当的状态。

+9

' IllegalStateException'对于被问到的具体情况是绝对正确的。请注意,在某些情况下,我认为抛出UnsupportedOperationException可能更合适。例如,如果'Iterator'不支持'remove'方法。 – csauve 2015-07-10 21:55:34