最佳实践错误处理

And*_*y M 5 language-agnostic error-handling design-patterns

我想知道在C++,Java,C#等编程语言中处理应用程序错误的最佳方法是什么.

我想到了创建一个存储与错误和警告消息相关的数字的地方.

例如 :

10000 - >"无法读取文件".... 20000 - >"缓冲区溢出".... 80000 - >"关键的东西".

我认为将错误与数字进行映射是一种很好的做法.无论显示哪种语言,都更容易找到错误.你们怎么看?还有更好的方法吗?

另一点是,如何存储它们,如何创建它们?

一个大的通用枚举是一个很好的解决方案吗?我们必须将它们存储在数据库中吗?在文件中?

它应该是 :

  • 很容易在代码中找到错误(即从数字中找到).
  • 容易添加新错误(如果没有在同一个地方,两次使用相同的错误号可能会很棘手).

你们怎么看待这一切?

在此先感谢您的帮助和建议!

Luc*_*sio 6

使用错误代码来识别异常并非坏习惯.

它在生产环境中非常有用,可以使日志文件更短,也可以用于国际化错误消息.

另一方面,在开发时,接收错误代码而不是具有有意义描述的完整错误消息可能是令人讨厌的.开发人员必须查看错误代码的内容.

在我的一个项目中(使用Java),我开发了一种混合方法.我的根异常有一个使用Enum类的构造函数.Enum类包含错误代码列表+默认错误消息.就像是:

public enum ErrorCodes {

    VALIDATION_ERROR(5001, "One of the objects cannot be validated"),
    RESOURCE_NOT_FOUND(4004, "The requested resource does not exist"),
Run Code Online (Sandbox Code Playgroud)

根异常还有其他构造函数,因此开发人员可以覆盖默认消息:

public CoreException(ErrorCodes _errorCode, final String message, final Throwable cause) {
   super(message, cause);
   errorCode = _errorCode.getCode();
}


public CoreException(ErrorCodes _errorCode, final String message) {
   super(message);
   errorCode = _errorCode.getCode();
}
Run Code Online (Sandbox Code Playgroud)

捕获异常时,异常处理程序可以决定(基于某些配置设置)仅记录错误和消息或错误.更复杂的错误处理程序还可以基于错误代码从资源包中查找特定语言的消息.