feat(0): [java]-[wechat-ferry-mvn]-自定义异常类
This commit is contained in:
parent
c0e8c4cc0e
commit
0db55a9016
80
clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/exception/BizException.java
vendored
Normal file
80
clients/java/wechat-ferry-mvn/src/main/java/com/wechat/ferry/exception/BizException.java
vendored
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
package com.wechat.ferry.exception;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
|
import com.wechat.ferry.entity.IResponse;
|
||||||
|
import com.wechat.ferry.enums.ResponseCodeEnum;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务异常类
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class BizException extends RuntimeException {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回接口
|
||||||
|
*/
|
||||||
|
@JsonInclude(JsonInclude.Include.NON_EMPTY)
|
||||||
|
private final IResponse response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回参数
|
||||||
|
*/
|
||||||
|
@JsonInclude(JsonInclude.Include.NON_EMPTY)
|
||||||
|
private transient Object[] arg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务异常构造器
|
||||||
|
*
|
||||||
|
* @param msg 异常信息
|
||||||
|
* @date 2021/11/24 23:58
|
||||||
|
*/
|
||||||
|
public <T extends IResponse> BizException(String msg) {
|
||||||
|
super(msg);
|
||||||
|
this.response = ResponseCodeEnum.FAILED;
|
||||||
|
this.arg = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务异常构造器
|
||||||
|
*
|
||||||
|
* @param msg 异常信息
|
||||||
|
* @param args 异常参数
|
||||||
|
* @date 2021/11/24 23:58
|
||||||
|
*/
|
||||||
|
public <T extends IResponse> BizException(String msg, Object... args) {
|
||||||
|
super(msg);
|
||||||
|
this.response = ResponseCodeEnum.FAILED;
|
||||||
|
this.arg = args;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业务异常构造器
|
||||||
|
*
|
||||||
|
* @param t 异常响应码
|
||||||
|
* @param args 异常参数
|
||||||
|
* @date 2021/11/24 23:59
|
||||||
|
*/
|
||||||
|
public <T extends IResponse> BizException(T t, Object... args) {
|
||||||
|
super(Arrays.toString(args));
|
||||||
|
this.response = t;
|
||||||
|
this.arg = args;
|
||||||
|
}
|
||||||
|
|
||||||
|
public <T extends IResponse> BizException(BizException e) {
|
||||||
|
this.response = e.getResponse();
|
||||||
|
this.arg = e.getArg();
|
||||||
|
}
|
||||||
|
|
||||||
|
public <T extends IResponse> BizException(ResponseCodeEnum t, String msg) {
|
||||||
|
super(msg);
|
||||||
|
this.response = t;
|
||||||
|
this.arg = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,79 @@
|
|||||||
|
package com.wechat.ferry.exception;
|
||||||
|
|
||||||
|
import java.text.MessageFormat;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.springframework.core.annotation.Order;
|
||||||
|
import org.springframework.web.bind.MethodArgumentNotValidException;
|
||||||
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
|
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||||
|
|
||||||
|
import com.wechat.ferry.entity.TResponse;
|
||||||
|
import com.wechat.ferry.enums.ResponseCodeEnum;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 全局统一异常
|
||||||
|
*
|
||||||
|
* @author Simith
|
||||||
|
* @date 2021/11/23 23:20
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Order(-1)
|
||||||
|
// 表示当前类为全局异常处理器
|
||||||
|
@RestControllerAdvice
|
||||||
|
public class GlobalExceptionHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通用异常-系统级别未知异常
|
||||||
|
*
|
||||||
|
* @param e 异常信息
|
||||||
|
* @return TResponse
|
||||||
|
* @author Simith
|
||||||
|
* @date 2021/11/23 23:22
|
||||||
|
*/
|
||||||
|
@ExceptionHandler(Exception.class)
|
||||||
|
public TResponse<Object> handleException(Exception e) {
|
||||||
|
log.error("全局异常信息 ex={}", e.getMessage(), e);
|
||||||
|
// 打印堆栈信息
|
||||||
|
e.printStackTrace();
|
||||||
|
String message = ResponseCodeEnum.FAILED.getMsg() + ":" + e.getMessage();
|
||||||
|
return new TResponse<>(ResponseCodeEnum.FAILED, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 参数异常
|
||||||
|
*
|
||||||
|
* @author chandler
|
||||||
|
* @date 2023/4/3 23:26
|
||||||
|
* @param request 请求入参
|
||||||
|
* @param e 异常消息
|
||||||
|
* @return TResponse 返回体
|
||||||
|
*/
|
||||||
|
@ExceptionHandler(value = {MethodArgumentNotValidException.class})
|
||||||
|
public TResponse<Object> handleValidationException(HttpServletRequest request, MethodArgumentNotValidException e) {
|
||||||
|
log.error("[请求体参数校验不通过]", e);
|
||||||
|
String message = e.getBindingResult().getAllErrors().get(0).getDefaultMessage();
|
||||||
|
return new TResponse<>(ResponseCodeEnum.PARAM_ERROR, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义错误异常
|
||||||
|
*
|
||||||
|
* @param e 异常信息
|
||||||
|
* @return TResponse
|
||||||
|
* @author Simith
|
||||||
|
* @date 2021/11/23 23:43
|
||||||
|
*/
|
||||||
|
@ExceptionHandler(BizException.class)
|
||||||
|
public TResponse<Object> handleBizException(BizException e) {
|
||||||
|
// 打印错误
|
||||||
|
e.printStackTrace();
|
||||||
|
// 获取错误码
|
||||||
|
String message = MessageFormat.format(e.getMessage(), e.getArg());
|
||||||
|
return new TResponse<>(ResponseCodeEnum.FAILED, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user