gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 13:10:27 26 4
gpt4 key购买 nike

如果我抛出非法参数异常,我还想传递诸如“值不能为负”之类的原因。我不喜欢这样的代码:

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";

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

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

您对大量自定义消息的处理方法是什么?

最佳答案

我所在的团队使用的一种可能的方法是创建自定义异常。因此,按照您的示例:

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,结合这两种解决方案。

关于java - 将自定义异常消息存储在文件或类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34020591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com