Java中带有变量字符串描述的错误代码

Java中带有变量字符串描述的错误代码,java,enums,Java,Enums,我希望Java项目中有错误代码,但它们应该有变量字符串描述。例如,我可能有两个BadCharacterCount错误,但我希望将它们表示为两个不同的字符串,例如“Bad character count:expected 50,Get 60”和“Bad character count:expected 40,Get 70”。我希望能够将这两种情况都识别为BadCharacterCount错误,并且理想情况下将它们放在某种枚举中 这里有一个类似问题的很好的讨论: 但是,它们不处理变量错误字符串的情

我希望Java项目中有错误代码,但它们应该有变量字符串描述。例如,我可能有两个BadCharacterCount错误,但我希望将它们表示为两个不同的字符串,例如“Bad character count:expected 50,Get 60”和“Bad character count:expected 40,Get 70”。我希望能够将这两种情况都识别为BadCharacterCount错误,并且理想情况下将它们放在某种枚举中

这里有一个类似问题的很好的讨论:


但是,它们不处理变量错误字符串的情况。。。有什么想法吗?

考虑使用错误字符串作为string.format()的格式。当然,您必须小心,让每个错误的参数与特定格式正确对齐。

我认为您的两个错误描述:

坏字符计数:预期为50,得到60

以及:

坏字符计数:预期为40,得到70

都是一样的。字符串为:

错误字符计数:应为%s,已为%s

然后,当您需要构造错误消息时,只需确保通过
String.format

String.Format(Error.BadCharacterCount, 50, 60)


你可以有这样的东西:

public class BadCharacterCountException extends Exception {
    public BadCharacterCountException(int expected, int recieved) {
       super("Bad character count: expected " + expected + ", got " + recieved + ".");
    }
}

public class BadCharacterCountException extends Exception {
    public BadCharacterCountException(int expected, int recieved) {
       super("Bad character count: expected " + expected + ", got " + recieved + ".");
    }
}
public enum ErrorCode {
    BadCharacterCount("Bad character count: expected {0}, got {1}.");

    private final String message;
    private ErrorCode(String message){
        this.message = message;
    }

    public String getErrorMessage(Object... args) {
        return MessageFormat.format(message, args);
    }
}