在文件或类中存储自定义异常消息

时间:2015-12-01 12:35:43

标签: java exception

如果我抛出非法论据异常,我也想传递像"Value can not be negative"这样的原因。我不喜欢这样的代码的想法:

public void setAge(int age) {
    if (age >= 0) {
        this.age = age;
    } else {
        throw new IllegalArgumentException("Age can not be negative");
    }
}

我在考虑像

这样的东西
public static final String AGE_CAN_NOT_BE_NEGATIVE = "Age can not be negative";

在另一个类中,将所有自定义异常消息存储在一个文件中。这样我也可以在单元测试中使用消息,看看是否抛出了正确的异常,当我使用该函数时。我也可以重用这些消息。自定义异常也是如此,我宁愿将消息存储在另一个文件中。

问题是:如果异常有很多自定义消息,那么类可以变得非常大。

您使用大量自定义消息的方法是什么?

1 个答案:

答案 0 :(得分:0)

我正在使用的团队使用的一种可能方法是创建自定义异常。所以,按照你的例子:

public void setAge(int age) {
    if (cost >= 0) {
        this.age = age;
    } else {
        throw new AgeIllegalArgumentException();
    }
}

...

private class AgeIllegalArgumentException extends IllegalArgumentException {
    public AgeIllegalArgumentException() {
        super("Age can not be negative");
    }
}

通过这种方式,您可以检查测试中是否抛出了正确的异常。我们倾向于为每个类定制这些自定义异常,但这取决于您希望具有的粒度。如果上述内容适用于Person课程,我们将提供以下内容:

private class PersonIllegalArgumentException extends IllegalArgumentException {
    public PersonIllegalArgumentException(String msg) {
        super(msg);
    }
}

如果您需要访问错误消息,并结合两种解决方案,您可以在上面提供静态String