feat:[REQ-3282] 增加异常处理类

This commit is contained in:
liuyang 2024-12-24 17:45:11 +08:00
parent 597aa0319c
commit 275d3319c8
2 changed files with 67 additions and 1 deletions

View File

@ -18,7 +18,9 @@ public enum BizResultCode implements IResultCode {
// 900 ~ 998 二方SDK相关错误码 // 900 ~ 998 二方SDK相关错误码
RPC_ERROR("900", "rpc error"), RPC_ERROR("900", "rpc error"),
DATA_PUMP_ERROR("999", "数据同步错误"),
UNKNOWN_ERROR("999", "未知异常"),
; ;

View File

@ -0,0 +1,64 @@
package cn.axzo.orgmanax.server;
import cn.axzo.foundation.exception.BusinessException;
import cn.axzo.foundation.result.ApiResult;
import cn.axzo.orgmanax.common.config.BizResultCode;
import cn.azxo.framework.common.model.CommonResponse;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@Slf4j
@RestControllerAdvice
public class ExceptionControllerAdvice {
private static final String ERROR_STACK_PATTERN = "(?s).*Exception.*";
private static final String DEFAULT_MSG = "操作失败,请重试或联系安心筑工作人员。";
/**
* 捕捉Exception异常
*
* @param ex
* @return
*/
@ExceptionHandler(Exception.class)
public ApiResult<?> exceptionHandler(Exception ex) {
log.error("未知异常", ex);
return ApiResult.error(BizResultCode.UNKNOWN_ERROR.getErrorCode(), extractMessage(ex));
}
/**
* 捕捉Exception异常
*
* @param ex
* @return
*/
@ExceptionHandler(BusinessException.class)
public ApiResult<?> exceptionHandler(BusinessException ex) {
log.error("业务异常", ex);
return ApiResult.error(ex.getErrorCode(), extractMessage(ex));
}
/**
* 提取错误信息
* @param e
* @return
*/
private String extractMessage(Exception e) {
boolean isStackTrace = isStackTrace(e.getMessage());
return isStackTrace ? DEFAULT_MSG : StrUtil.emptyToDefault(e.getMessage(), DEFAULT_MSG);
}
/**
* 是否为栈信息
* @param errorMessage
* @return
*/
private boolean isStackTrace(String errorMessage) {
// 返回匹配结果
return ReUtil.isMatch(ERROR_STACK_PATTERN, errorMessage);
}
}