异常的处理

  1. 全局异常处理

@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    //拦截所有异常
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public R error(Exception e){
        e.printStackTrace();
        return R.error().message("执行了全局的异常处理器");
    }
}
  1. 自定义异常处理
    首先创建自定义的异常类:一般情况下包含状态码和异常信息字段
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CustomException extends RuntimeException{

    private Integer code;//状态码
    private String msg;//信息
}

在异常处理器中添加拦截方法

//自定义异常
    @ExceptionHandler(CustomException.class)
    @ResponseBody
    public R error(CustomException e){
        log.error(e.getMsg());
        e.printStackTrace();
        return R.error().message(e.getMsg()).code(e.getCode());
    }
  1. 特殊异常处理:对指定的异常进行拦截
//特殊异常(例如空指针)
    @ExceptionHandler(NullPointerException.class)
    @ResponseBody
    public R error(NullPointerException e){
        log.error(e.getMsg());
        e.printStackTrace();
        return R.error().message(e.getMsg()).code(e.getCode());
    }

posted @ 2022-11-18 17:49  风一样的男子、  阅读(30)  评论(0)    收藏  举报