2010-03-02 235 views
19

在Java中,是使用有「非法」之間(如在IllegalArgumentException)與「無效」語義差異(如在javax.activity.InvalidActivityException)?Java異常命名約定

在轉讓的過程中它成爲寫的IllegalArgumentException子類來表示的一系列無法​​標記化輸入的字符是有用的,我想知道公約是否說,使用InvalidTokenExceptionIllegalTokenException

到目前爲止唯一的區別是java.lang似乎更喜歡「非法」,而javax.*更喜歡「無效」。但是,也有java.security.InvalidParameterException,它是IllegalArgumentException的子類。

+0

@ehdv upated我的回答 – stacker 2010-03-08 20:07:53

回答

8

您可以有合法使用API​​並仍然有無效數據;它都是語義。

+2

但IllegalArgumentException似乎涵蓋了非法API使用情況和無效數據。 – ehdv 2010-03-03 18:47:32

-1

AFAIK,IllegalArgumentException應該只用於當您想要錯誤地使用API​​方法調用時。看起來你描述的是一個API使用不當的場景,所以我認爲IllegalArgumentException將是更好的選擇。

+0

第二個「IllegalArgumentException」是否意味着'IllegalStateException'?如果沒有,我真的很困惑... – ehdv 2010-03-02 15:33:33

+1

AFAIK這不是什麼OP是問。 – 2010-03-02 15:36:25

+0

@DR - 你會是對的。感謝格式改進,順便說一句。 – ehdv 2010-03-02 15:43:54

2

javax.activity.InvalidActivityExceptionjava.rmi.RemoteException繼承,你可能不希望這種依賴。另請參見Javadoc

編輯無效和非法同義使用它沒有語義上的差異,只是上面提到的技術問題。

編輯:從Postgres Documentation節45.3.14。 Tricky的話要避免:

非法。 「非法」代表違法,其餘爲「無效」。更好的是,說出爲什麼它是無效的。

+1

他在談論名稱,而不是擴展InvalidActivityException。 – 2010-03-02 15:35:04