问题一:为什么建议不将错误消息本地化(localize)为中文,但考虑到实际情况又可以做这样的选择?
为什么建议不将错误消息本地化(localize)为中文,但考虑到实际情况又可以做这样的选择?
参考回答:
建议不将错误消息本地化为中文主要是出于通用性和国际化的考虑。然而,考虑到国内大多数程序员可能更习惯使用中文表达,并且中文描述在某些情况下可能更清晰易懂,因此可以根据实际情况选择将错误消息本地化为中文。但需要注意的是,这可能会降低代码的通用性和国际化程度。
关于本问题的更多问答可点击原文查看:
https://developer.aliyun.com/ask/674848
问题二:如何在Java中通过几行代码实现一个基于properties文件的错误消息管理系统?
如何在Java中通过几行代码实现一个基于properties文件的错误消息管理系统?
参考回答:
建议不将错误消息本地化为中文主要是出于通用性和国际化的考虑。然而,考虑到国内大多数程序员可能更习惯使用中文表达,并且中文描述在某些情况下可能更清晰易懂,因此可以根据实际情况选择将错误消息本地化为中文。但需要注意的是,这可能会降低代码的通用性和国际化程度。
import org.slf4j.helpers.MessageFormatter; import java.util.Locale; import java.util.ResourceBundle; public class AppErrorMessages { private static final String BUNDLE_FQN = "app.ErrorMessages"; private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_FQN, new Locale("en", "US")); public static String message(String key, Object... params) { if (RESOURCE_BUNDLE.containsKey(key)) { String value = RESOURCE_BUNDLE.getString(key); final FormattingTuple tuple = MessageFormatter.arrayFormat(value, params); return key + " - " + tuple.getMessage(); } else { return MessageFormatter.arrayFormat(key, params).getMessage(); } } }
关于本问题的更多问答可点击原文查看:
https://developer.aliyun.com/ask/674850
问题三:如何在日志记录时自动将错误码和对应的消息进行包装和打印?
如何在日志记录时自动将错误码和对应的消息进行包装和打印?
参考回答:
可以通过创建一个ErrorCodeLogger类来实现日志的包装,该类继承或实现日志接口(如Logger),并在其方法中通过ResourceBundle获取对应的错误消息,然后调用委托的日志记录器进行记录。示例代码如下:
import java.util.Locale; import java.util.ResourceBundle; public class ErrorCodeLogger implements Logger { private Logger delegate; private static final String BUNDLE_FQN = "app.ErrorMessages"; private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_FQN, new Locale("en", "US")); public ErrorCodeLogger(Logger delegate) { this.delegate = delegate; } @Override public void trace(String msg) { // 注意:这里msg应为错误码,实际项目中可能需要修改方法签名以支持参数 String errorMessage = RESOURCE_BUNDLE.getString(msg); delegate.trace(errorMessage); } //
其他日志级别的方法(如info, error等)也需要相应实现
}注意:上述ErrorCodeLogger类的trace方法示例中,假设msg参数直接为错误码,但在实际应用中,你可能需要修改方法签名以支持传递错误码和参数,或者修改内部逻辑以适应你的具体需求。
关于本问题的更多问答可点击原文查看:
https://developer.aliyun.com/ask/674852
问题四:如何在Java中使用AppErrorMessages类来打印带有参数的错误消息?
如何在Java中使用AppErrorMessages类来打印带有参数的错误消息?
参考回答:
你可以直接调用AppErrorMessages.message方法,并传入错误码和需要替换到消息中的参数。例如:
log.info(AppErrorMessages.message("APP-100-400", "xxx@example.com")); 这将输出类似"APP-100-400 - Failed to log in system with email and password(Email login failed): can not find account with email xxx@example.com --- please refer https://example.com/login/byemail --- Solutions: 1. check your email 2. check your password"的日志信息。
关于本问题的更多问答可点击原文查看:
https://developer.aliyun.com/ask/674853
问题五:ErrorCodeLogger类如何确保只记录存在于properties文件中的错误码对应的消息?
ErrorCodeLogger类如何确保只记录存在于properties文件中的错误码对应的消息?
参考回答:
ErrorCodeLogger类在记录日志之前,应该通过ResourceBundle检查提供的错误码是否存在。如果不存在,可以选择记录一个默认的错误消息,或者抛出一个异常来指示无效的错误码。然而,上述ErrorCodeLogger的示例代码并未直接处理这种情况,因为它假设所有传入的错误码都是有效的。在实际应用中,你可能需要添加相应的逻辑来处理无效的错误码。
关于本问题的更多问答可点击原文查看: