Javaexception命名约定
在Java中,使用“ Illegal ”(如IllegalArgumentException
)与“ Invalid ”(如javax.activity.InvalidActivityException
)之间是否存在语义差异?
在赋值过程中,编写IllegalArgumentException
的子类来表示一系列无法标记的输入字符变得很有用,我想知道约定是否使用InvalidTokenException
或IllegalTokenException
。
我到目前为止唯一的区别是java.lang
似乎更喜欢“非法”而javax.*
更喜欢“无效”。 但是,还有java.security.InvalidParameterException
,它是IllegalArgumentException
的子类。
您可以合法使用API并仍然拥有无效数据; 这都是语义学。
javax.activity.InvalidActivityException
inheritance自java.rmi.RemoteException
,您可能不希望这种依赖。 另见Javadoc
EDIT同时使用Invalid和Illegal同义词它在语义上没有差别,只是上面提到的技术问题。
编辑:从Postgres 文档部分45.3.14。 要避免的棘手的话:
非法 。 “非法”代表违法,其余是“无效”。 更好的是,说明为什么它无效。
只有当您想要发出错误使用API方法调用的信号时,才应使用AFAIK,IllegalArgumentException。 你所描述的是一个API被错误使用的场景,所以我认为IllegalArgumentException是更好的选择。
- 如何忽略Java中的exception
- CopyOnWriteArrayList抛出CurrentModificationException
- XMLPullParser解析器无法解析“(??????)·”xml标记内部
- Java Arraylist得到了java.lang.IndexOutOfBoundsException?
- 使用JUnit 4注释测试多个exception
- 如何在Java中避免ResultSet被关闭的exception?
- 我无法理解为什么抛出这个JAXB IllegalAnnotationException
- 从Java ExecutorService捕获线程exception
- java同步和exception处理