在Java中,使用“非法”(如IllegalArgumentException
)与“无效”之间存在语义差异(如javax.activity.InvalidActivityException
})?
在赋值过程中,编写IllegalArgumentException
的子类来表示一系列无法标记的输入字符变得很有用,我想知道约定是否使用InvalidTokenException
或IllegalTokenException
。
到目前为止我能找到的唯一区别是,java.lang
似乎更喜欢“非法”而javax.*
更喜欢“无效”。但是,还有java.security.InvalidParameterException
,它是IllegalArgumentException
的子类。
答案 0 :(得分:8)
您可以合法使用API,但仍然有无效数据;这都是语义学。
答案 1 :(得分:2)
javax.activity.InvalidActivityException
继承自java.rmi.RemoteException
,您可能不希望这种依赖。另请参阅Javadoc
编辑无效和非法同义词使用它在语义上没有区别,只是上面提到的技术问题。
编辑:来自Postgres Documentation第45.3.14节。要避免的棘手话语:
非法即可。 “非法”代表违法,其余是“无效”。更好的是,说明为什么它无效。
答案 2 :(得分:-1)
AFAIK,IllegalArgumentException仅在您想要发出错误使用API方法调用的信号时使用。你正在描述的是一个API使用不正确的情况,所以我认为IllegalArgumentException是更好的选择。