Java系统中的错误码设计问题之实现一个基于properties文件的错误消息管理系统如何解决

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Java系统中的错误码设计问题之实现一个基于properties文件的错误消息管理系统如何解决

问题一:为什么建议不将错误消息本地化(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的示例代码并未直接处理这种情况,因为它假设所有传入的错误码都是有效的。在实际应用中,你可能需要添加相应的逻辑来处理无效的错误码。


关于本问题的更多问答可点击原文查看:

https://developer.aliyun.com/ask/674855

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
11天前
|
Java
使用IDEA创建项目运行我的第一个JAVA文件输出Helloword
本文介绍了如何使用IDEA(IntelliJ IDEA)创建一个新的Java项目,并运行一个简单的Java程序输出"Hello Word"。文章详细展示了创建项目的步骤,包括选择JDK版本、设置项目名称和路径、创建包和类,以及编写和运行代码。最后,还展示了如何通过IDEA的运行功能来执行程序并查看输出结果。
32 4
使用IDEA创建项目运行我的第一个JAVA文件输出Helloword
|
11天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
33 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
11天前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
27 1
|
5天前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
12 2
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
|
8天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
23 3
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
|
9天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的蛋糕商城管理系统
基于Java+Springboot+Vue开发的蛋糕商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的蛋糕商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
21 3
基于Java+Springboot+Vue开发的蛋糕商城管理系统
|
9天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的美容预约管理系统
基于Java+Springboot+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的美容预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
21 3
基于Java+Springboot+Vue开发的美容预约管理系统
|
11天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的房产销售管理系统
基于Java+Springboot+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
25 3
基于Java+Springboot+Vue开发的房产销售管理系统
|
12天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的反诈视频宣传系统
基于Java+Springboot+Vue开发的反诈视频宣传系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的反诈视频宣传管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
41 4
基于Java+Springboot+Vue开发的反诈视频宣传系统
|
13天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的健身房管理系统
基于Java+Springboot+Vue开发的健身房管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的健身房管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
42 5
基于Java+Springboot+Vue开发的健身房管理系统
下一篇
无影云桌面