java – 未调用先决条件方法时抛出什么异常?

前端之家收集整理的这篇文章主要介绍了java – 未调用先决条件方法时抛出什么异常?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个方法getUser,它从数据库中检索用户.该方法要求您验证用户是否确实存在(通过userExists(String username)方法.

如果调用了getUser方法并且用户不存在,我想抛出一个未经检查的异常,但是哪个异常最合适呢?我想到了IllegalArgumentException,但它感觉不完全正确,因为在某些情况下某些输入可能没问题,但在其他情况下则不然 – 它们并非严格“非法”.有什么建议?

解决方法

对我来说IllegalArgumentException意味着该论点是非法的,并且总是非法的.我将使用的异常是IllegalStateException来说明检查用户无效的对象的状态.

但是,您可能有一个特定的例外,您可以创建自己的例外.

public class UsernameNotCheckedException extends IllegalStateException {
    public UsernameNotCheckedException(String message) {
        super(message);
    }
}

这可以使调试更容易.

NumberFormatException是IllegalArgumentException的子类.如果您尝试解析数字12QW4,它将为您提供NumberFormatException,并且您无法做任何事情以使其稍后成为有效参数.即它与任何事物的状态无关.

IllegalStateException的Javadoc状态.

Signals that a method has been invoked at an illegal or inappropriate time. In other words,the Java environment or Java application is not in an appropriate state for the requested operation.

猜你在找的Java相关文章