创建统一异常处理器

  1. 统一异常处理
    想让异常结果显示为统一的返回结果对象,并且统一处理系统的异常信息
  2. 步骤
    2.1. 创建统一返回结果类
    2.2. 自定义异常类
    2.3. 创建统一异常处理类 @ControllerAdvice/ @ExceptionHandler
@Data
public class R {
    
    
    private Boolean success;
    private Integer code;
    private String message;
    private Map<String, Object> data = new HashMap<>();

    public static R ok() {
    
    
        R r = new R();
        r.setSuccess(true);
        r.setCode(200);
        r.setMessage("成功");
        return r;
    }

    public static R error() {
    
    
        R r = new R();
        r.setSuccess(false);
        r.setCode(404);
        r.setMessage("失败");
        return r;
    }

    //如下目的是实现链式编程
    public R success(Boolean success) {
    
    
        this.setSuccess(success);
        return this;
    }

    public R code(Integer code) {
    
    
        this.setCode(code);
        return this;
    }

    public R message(String message) {
    
    
        this.setMessage(message);
        return this;
    }

    public R data(String key, Object value) {
    
    
        this.data.put(key, value);
        return this;
    }
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MyException extends Exception{
    
    
    
    private Integer code;
    private String msg;
}
//异常处理器(特定异常处理优先于统一异常处理)
@ControllerAdvice
public class GlobalExceptionHandler {
    
    

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public R error(Exception e) {
    
    

        e.printStackTrace();
        return R.error().message("执行了全局异常处理");
    }

    @ExceptionHandler(MyException.class)
    @ResponseBody
    public R error(MyException e) {
    
    

        e.printStackTrace();
        return R.error().code(e.getCode()).message(e.getMsg());
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_51681634/article/details/111143290