异常与异常中的错误代码hierarhy

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而不是字符串会更好,但我实际上关心的是错误代码的概念.你认为这里的例外情况会更好吗?我找不到任何权威来源说异常中的错误代码是反模式.谢谢.

And*_*s_D 8

错误代码非常有用

  • 您无法显示完整的错误消息(洗碗机显示屏)
  • 代码必须在内部处理(如果出现某个代码,或者服务器在客户端负责消息时向客户端发送错误代码,则会触发某些逻辑)
  • 我们有一本很棒的手册,用户可以使用该代码获取全面的信息
  • 用户不需要知道发生了什么,但必须联系供应商

所以,大部分时间,我都没有看到错误代码中的任何附加价值.我更喜欢在日志文件中找到的异常层次结构或至少清晰的错误消息(即使在程序员离开公司2年后)也是如此.

如果您对错误代码有要求 - 解决方案也不错.考虑在中央存储库(属性文件)中收集所有错误代码,以便您可以轻松地交换完整集:

myexception.ERROR_CODE_INVALID_NAME=text or number
myexception.ERROR_CODE_INVALID_ID=text or number
Run Code Online (Sandbox Code Playgroud)


ugh*_*zan 1

如果您想根据导致异常的原因(无效的名称或无效的 id)做出不同的反应(在代码中),那么我建议使用不同的异常。

如果没有,那么您甚至不需要该getErrorCode()方法,您只需将错误代码添加到异常消息中,异常就会为您提供调试所需的所有信息。