我有一个getUser从数据库中检索用户的方法.该方法要求您验证用户是否确实存在(通过该userExists(String username)方法.
如果getUser调用该方法并且用户不存在,我想抛出一个未经检查的异常,但哪个异常最合适呢?我想过IllegalArgumentException,但感觉并不完全正确,因为在某些情况下某些输入可能没问题,但其他情况则不然 - 它们并非严格"非法".有什么建议?
Pet*_*rey 13
对我来说IllegalArgumentException意味着该论点是非法的,并且总是非法的.我将使用的异常是IllegalStateException来说明检查用户无效的对象的状态.
但是,您可能有一个特定的例外,您可以创建自己的例外.
public class UsernameNotCheckedException extends IllegalStateException {
public UsernameNotCheckedException(String message) {
super(message);
}
}
Run Code Online (Sandbox Code Playgroud)
这可以使调试更容易.
A NumberFormatException是的子类IllegalArgumentException.如果你试图解析12QW4它会给你一个数字,NumberFormatException你可以做任何事情以使其成为一个有效的论据.即它与任何事物的状态无关.
国家的Javadoc IllegalStateException.
表示在非法或不适当的时间调用了方法.换句话说,Java环境或Java应用程序未处于所请求操作的适当状态.