在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