如何外部化错误消息

这是外部化错误消息的最佳实践问题。

我正在开发一个项目,我们在代码,简短描述和严重性方面存在错误。 我想知道将这些描述外化的最佳方法是什么。 我想到的是将它们放在不好的代码中,将它们存储在数据库中,将它们放在属性文件中,或者将静态类加载到描述中。 我想我会选择属性,但也许有更好的方法。

谢谢

使用ResourceBundle存储这些消息(以及其他用户界面消息,如按钮和标签文本,加速器,快捷方式等)。 这是一个简短的示例,假设您有一个名为ErrorMessages的包,其中包含名为error.NameOfErrorMessage的错误和可变帧中的JFrame。

ResourceBundle errorMsg = ResourceBundle.getBundle("ErrorMessages"); String currError = errorMsg.getString("error.NameOfErrorMessage"); JOptionPane.showMessageDialog(frame, currError); 

有关更多信息,您可以在国际化教程中查看关于资源包类 。

我们面临着类似的问题。 你是对的,在代码中包含消息是一个糟糕的选择。 我们发现有几个因素会影响哪种方案更好。 在我们的例子中,我们需要在客户端使用Java处理相同的错误代码,并在服务器端使用SQL和Perl代码。 我们发现有一个中心定义很有用,所以我们使用了数据库。

如果您只需要在Java中处理错误代码,则属性文件或资源包可能是最灵活的,因为它们允许本地化和/或国际化。 我会远离静态课; 虽然它比在线错误描述更好,但它仍然相对不灵活。

我想有很多方法可以正确地做到这一点。 我看到的最常见的方法是使用与实际代码中的内部错误代码相关的外部文件和类似的描述

 error.123="Error with data X" warning.1="You must use ..." 

要更改应用程序上的文本错误,您只需要更改此文本文件。 这是国际化的工作方式

 error.123="Error con el dato X" warning.1="Deberías usar ..."