Java异常命名约定

Java异常命名约定,java,exception,naming-conventions,Java,Exception,Naming Conventions,在Java中,使用“非法”(如IllegalArgumentException)和“无效”(如javax.activity.InvalidActivityException)之间有语义上的区别吗 在赋值过程中,编写IllegalArgumentException的子类来表示一系列无法标记的输入字符变得非常有用,我想知道惯例是说使用InvalidTokenException还是IllegalTokenException 到目前为止,我能找到的唯一区别是java.lang似乎更喜欢“非法”,而jav

在Java中,使用“非法”(如
IllegalArgumentException
)和“无效”(如
javax.activity.InvalidActivityException
)之间有语义上的区别吗

在赋值过程中,编写
IllegalArgumentException
的子类来表示一系列无法标记的输入字符变得非常有用,我想知道惯例是说使用
InvalidTokenException
还是
IllegalTokenException


到目前为止,我能找到的唯一区别是
java.lang
似乎更喜欢“非法”,而
javax.*
更喜欢“无效”。但是,还有
java.security.InvalidParameterException
,它是
IllegalArgumentException
的子类。好了,IllegalArgumentException只应在您想要发出API方法调用使用错误的信号时使用。您所描述的似乎是API被错误使用的场景,因此我认为IllegalArgumentException是更好的选择。

javax.activity.InvalidActivityException
继承自
java.rmi.RemoteException
,您可能不想要这种依赖关系。另见

“编辑无效”和“非法”是同义词。它在语义上没有区别,只是上面提到的技术问题

编辑:来自Postgres第45.3.14节。要避免的棘手词语:


非法。“非法”代表违法,其余为“无效”。更好的是,说出它为什么无效

您可以合法使用API,但仍然拥有无效的数据;这都是语义。

你是说第二个“IllegalArgumentException”的
IllegalStateException
?如果不是的话,我真的很困惑……好吧,这不是OP所要求的。@DR-你是对的。顺便说一句,感谢对格式的改进。他说的是名称,而不是扩展InvalidActivityException。但是IllegArgumentException似乎涵盖了非法API使用和无效数据。