2010-03-02 239 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