Dar*_*oar 12 java anti-patterns exception error-code
您认为在异常中使用错误代码来指定错误类型是否可以?请看一下这段代码:
public class MyException extends Exception {
public static final String ERROR_CODE_INVALID_NAME = "";
public static final String ERROR_CODE_INVALID_ID = "";
...
private String errorCode;
public MyException(String message, String errorCode) {
super(message);
this.errorCode = errorCode;
}
public String getErrorCode() {
return errorCode;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道在这个例子中使用enum而不是字符串会更好,但我实际上关心的是错误代码的概念.你认为这里的例外情况会更好吗?我找不到任何权威来源说异常中的错误代码是反模式.谢谢.
错误代码非常有用
所以,大部分时间,我都没有看到错误代码中的任何附加价值.我更喜欢在日志文件中找到的异常层次结构或至少清晰的错误消息(即使在程序员离开公司2年后)也是如此.
如果您对错误代码有要求 - 解决方案也不错.考虑在中央存储库(属性文件)中收集所有错误代码,以便您可以轻松地交换完整集:
myexception.ERROR_CODE_INVALID_NAME=text or number
myexception.ERROR_CODE_INVALID_ID=text or number
Run Code Online (Sandbox Code Playgroud)
如果您想根据导致异常的原因(无效的名称或无效的 id)做出不同的反应(在代码中),那么我建议使用不同的异常。
如果没有,那么您甚至不需要该getErrorCode()方法,您只需将错误代码添加到异常消息中,异常就会为您提供调试所需的所有信息。