2011-02-03 81 views
5

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

我想创造一个地方存储与错误和警告消息相关的数字。

例如:

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

我认为将错误与数字进行映射是一种很好的做法。无论显示哪种语言,都可以更容易地找到错误。你们有什么想法?有没有更好的方法来做到这一点?

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

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

它应该是:

  • 容易找到代码中的错误(即从数量)。
  • 容易添加新的错误(如果不在同一地点,不使用相同的错误编号两次可能会非常棘手)。

你们怎么看待这一切?

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

回答

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"), 

的根异常也具有其他的构造,从而使开发人员可以重写默认消息:

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(); 
} 

当异常被捕获的异常处理程序可以决定(根据一些配置设置)仅记录错误和消息或错误。 更复杂的错误处理程序也可以根据错误代码从资源包中以特定语言查找消息。

+0

是的,这正是我所期待的。我不想只显示一个数字,找到相关的错误会是一件很痛苦的事情。但是我想为用户显示数字和可理解的文本。这样,如果在某个时候,我们获得了一个外语文本的截图,我们仍然有数字来匹配错误!实际上,我们正在考虑像您一样的数字和默认文字。它以另一种方式实施,但这个想法仍然一样!感谢您的回答! – 2011-02-03 09:18:42

0

不要这样做。

我们有比C和FORTRAN更好的工具。

抛出异常并给出名称。 C#和Java将提供调用堆栈。

C++可以告诉你异常的类型(只是几乎没有)

+2

生产监控如何?使用多个组件部署大型应用程序时,错误代码非常重要。正常的生产环境监视日志以查找特定的字符串(大多数情况下为错误代码)并根据这些字符串采取行动。另外,你真的想要结束数百个Exception类吗? – 2011-03-22 14:25:35