2010-08-01 63 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