|
|
|
@ -1,32 +1,59 @@
|
|
|
|
|
package com.tamguo.common.utils;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 统一异常处理 日志处理
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
// 该类主要用于统一异常处理以及相关的日志处理操作,旨在提供一种标准化的方式来处理程序运行过程中出现的异常,并记录相应的日志信息。
|
|
|
|
|
public class ExceptionSupport {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 定义一个静态的 Result 对象,表示失败的结果,其状态码被设置为 "500",通常用于在出现异常等错误情况时返回给调用者,告知操作失败。
|
|
|
|
|
private final static Result failResult = Result.failResult("500");
|
|
|
|
|
|
|
|
|
|
// 定义一个静态的 LogHandler 类型的对象,初始化为 Log4jHandler 实例,用于后续进行日志记录相关的操作,这里假设 Log4jHandler 是实现了 LogHandler 接口并具体负责日志处理逻辑的类。
|
|
|
|
|
private static LogHandler handler = new Log4jHandler();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 定义日志信息前缀,用于在记录普通信息级别的日志时添加在日志内容前面,方便区分不同级别的日志以及对日志内容进行格式化展示,使日志更具可读性。
|
|
|
|
|
private final static String LOG_INFO_PREFIX = "--info>> ";
|
|
|
|
|
|
|
|
|
|
// 定义错误信息前缀,用于在记录错误级别的日志时添加在日志内容前面,和信息日志前缀类似,起到区分和格式化日志的作用,便于快速定位和识别错误相关的日志内容。
|
|
|
|
|
private final static String LOG_ERROR_PREFIX = "--error>> ";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 该方法用于处理异常并根据异常类型返回相应的结果,同时记录对应的日志信息。
|
|
|
|
|
* 它接收方法相关信息(可能是出现异常的方法名称或者相关描述)、异常所在的类以及具体的异常对象作为参数。
|
|
|
|
|
* 如果传入的异常是 CException 类型(自定义的异常类型,从代码上下文推测),则记录信息级别的日志(使用 info 方法记录,日志内容通过 formatInfoLevelMsg 方法格式化),然后返回一个表示失败的 Result 对象,其失败信息为异常的具体消息内容。
|
|
|
|
|
* 如果传入的异常不是 CException 类型,则记录错误级别的日志(使用 error 方法记录,日志内容通过 formatErrorLevelMsg 方法格式化),并返回预先定义好的表示失败且状态码为 "500" 的 failResult 对象。
|
|
|
|
|
*
|
|
|
|
|
* @param methodInfo 与出现异常的方法相关的信息描述,例如方法名或者对方法执行情况的简单说明,用于在日志中更清晰地标识异常来源。
|
|
|
|
|
* @param clazz 出现异常的类的 Class 对象,用于明确异常所在的类,方便在日志记录等操作中准确地定位问题所在的类范围。
|
|
|
|
|
* @param e 具体的异常对象,代表程序运行过程中出现的错误情况,该方法会根据此异常的类型进行不同的处理逻辑。
|
|
|
|
|
* @return 返回一个 Result 对象,若是 CException 则返回包含具体异常消息的失败结果,否则返回通用的状态码为 "500" 的失败结果,表示出现了未预期的错误情况。
|
|
|
|
|
*/
|
|
|
|
|
public static Result resolverResult(String methodInfo, Class<?> clazz, Exception e) {
|
|
|
|
|
if(e instanceof CException) {
|
|
|
|
|
if (e instanceof CException) {
|
|
|
|
|
handler.info(formatInfoLevelMsg(methodInfo, e.getMessage()), clazz.getName());
|
|
|
|
|
return Result.failResult(e.getMessage());
|
|
|
|
|
}
|
|
|
|
|
handler.error(formatErrorLevelMsg(methodInfo), e, clazz.getName());
|
|
|
|
|
return failResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 用于格式化信息级别日志的消息内容,将给定的方法相关信息和具体的信息消息拼接在一起,并添加信息日志前缀,使日志格式统一且更易读。
|
|
|
|
|
*
|
|
|
|
|
* @param methodInfo 与方法相关的信息描述,例如方法名或者对方法执行情况的简单说明。
|
|
|
|
|
* @param infoMsg 具体的信息消息内容,例如一些正常的业务提示信息或者在特定情况下需要记录的辅助说明信息等。
|
|
|
|
|
* @return 格式化后的信息级别日志消息字符串,格式为 "--info>> [方法信息]: [具体消息内容]"。
|
|
|
|
|
*/
|
|
|
|
|
private static String formatInfoLevelMsg(String methodInfo, String infoMsg) {
|
|
|
|
|
return LOG_INFO_PREFIX + methodInfo + ": " + infoMsg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 用于格式化错误级别日志的消息内容,给给定的方法相关信息添加错误日志前缀,使其符合统一的错误日志格式要求,方便后续查看和分析错误日志。
|
|
|
|
|
*
|
|
|
|
|
* @param methodInfo 与出现异常的方法相关的信息描述,例如方法名或者对方法执行情况的简单说明。
|
|
|
|
|
* @return 格式化后的错误级别日志消息字符串,格式为 "--error>> [方法信息]"。
|
|
|
|
|
*/
|
|
|
|
|
private static String formatErrorLevelMsg(String methodInfo) {
|
|
|
|
|
return LOG_ERROR_PREFIX + methodInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|