在Java中定义错误代码/字符串的最佳方法?

我正在用Java编写Web服务,并且

。我需要将数字错误代码和错误字符串分组在一起。错误代码和错误字符串都将发送到访问Web服务的客户端。例如,当发生SQLException时,我可能要执行以下操作:

// Example: errorCode = 1, 

// errorString = "There was a problem accessing the database."

throw new SomeWebServiceException(errorCode, errorString);

客户端程序可能会显示以下消息:

“发生了错误#1:访问数据库时出现问题。”

我的第一个想法是使用一个Enum错误代码并重写toString方法以返回错误字符串。这是我想出的:

public enum Errors {

DATABASE {

@Override

public String toString() {

return "A database error has occured.";

}

},

DUPLICATE_USER {

@Override

public String toString() {

return "This user already exists.";

}

},

// more errors follow

}

还有更好的方法吗?我希望使用代码中的解决方案,而不是从外部文件中读取。我正在为此项目使用Javadoc,并且能够内联记录错误代码并在文档中自动更新它们将很有帮助。

回答:

好吧,当然可以更好地实现枚举解决方案(通常非常不错):

public enum Error {

DATABASE(0, "A database error has occured."),

DUPLICATE_USER(1, "This user already exists.");

private final int code;

private final String description;

private Error(int code, String description) {

this.code = code;

this.description = description;

}

public String getDescription() {

return description;

}

public int getCode() {

return code;

}

@Override

public String toString() {

return code + ": " + description;

}

}

您可能需要重写toString()来仅返回描述-不确定。无论如何,主要要点是您不需要为每个错误代码分别覆盖。还要注意,我已经明确指定了代码,而不是使用序号-

这使更改顺序和以后添加/删除错误更加容易。

不要忘记这根本不是国际化的,但是除非您的Web服务客户端向您发送语言环境描述,否则您就无法轻易地将其国际化。至少他们会在客户端上使用错误代码供i18n使用…

以上是 在Java中定义错误代码/字符串的最佳方法? 的全部内容, 来源链接: utcz.com/qa/407478.html

回到顶部