目录
1总结
1:全局异常一定打印,并且 一定用带异常参数那个api。这样打印出来的才容易看出来问题。
2:自定义异常 (枚举类型,自由风格异常)。好让全局异常能够告知用户发生的具体问题。
展示不同打印的结果
2 代码
import com.example.demo.entity.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* @创建人 赵伟
* @创建时间 2022/12/12
* @描述
*/
@Slf4j
@RestControllerAdvice
public class MyExceptionHandler {
@ExceptionHandler(value =Exception.class)
public Result exceptionHandler(Exception e){
log.error(e.getMessage(), e);
return Result.errorMsg("服务器忙,请稍后重试");
}
/**
* 自定义的异常
* @param e
* @return
*/
@ExceptionHandler(value =MyException.class)
public Result exceptionHandler1(MyException e){
log.error(e.getMessage(), e);
return Result.errorMsg(e.getCodeEnum().getValue(),e.getMsg());
}
@ExceptionHandler(value =CommonException.class)
public Result exceptionHandler1(CommonException e){
log.error(e.getMessage(), e);
return Result.errorMsg(e.getErrCode(),e.getErrMsg());
}
/**
* Valid的校验
* @param e
* @return
*/
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public R exceptionHandler1(MethodArgumentNotValidException e){
log.error(e.getMessage(), e);
return Result.errorMsg(e.getBindingResult().getAllErrors().get(0).getDefaultMessage());
}
}
枚举类型的抛异常类
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@Data
@Slf4j
public class MyException extends RuntimeException{
/**
* 异常数据提示
*/
private String msg;
private ExceptionCodeEnum codeEnum;
public MyException(ExceptionCodeEnum codeEnum, String msg) {
super(msg);
this.codeEnum = codeEnum;
this.msg = msg;
}
}
异常枚举类型
public enum ExceptionCodeEnum {
/**
* 需要前端弹框
*/
Alert("Alert", 0),
/**
* 登录超时超时20分钟
*/
LoginTimeout("PageTimeout", 100),
/**
* 密码简单需要修改
*/
EasyPassword("EasyPassword",101),
/**
* 订单模块异常
*/
OrderError("OrderError",300),
/**
* 订单超时
*/
OrderTimeout("OrderTimeout",301),
;
ExceptionCodeEnum(String code, int value) {
this.code = code;
this.value = value;
}
private String code;
private int value;
public String getCode() {
return code;
}
public int getValue() {
return value;
}
}
自由一点的抛异常类
import lombok.Data;
/**
* @描述 自由风格的异常
*/
@Data
public class CommonException extends RuntimeException{
private Integer errCode;
private String errMsg;
}