统一异常处理

在前后端开发的项目中,我们有统一返回结果类,但是当出现异常时返回的结果通常不统一,前端处理起来比较困难,这是我们就需要统一异常处理。

统一结果实体类

1.全局异常处理器


//controller增强器
@ControllerAdvice
public class GlobalExceptionHandler {

    //捕获异常
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Result error(){
        return Result.build(null, ResultCodeEnum.SYSTEM_ERROR);
    }
}

2.自定义异常

1.创建自定义异常处理类

@Data
public class CustomException extends RuntimeException {

    private Integer code ;          // 错误状态码
    private String message ;        // 错误消息

    private ResultCodeEnum resultCodeEnum ;     // 封装错误状态码和错误消息

    public CustomException(ResultCodeEnum resultCodeEnum) {
        this.resultCodeEnum = resultCodeEnum ;
        this.code = resultCodeEnum.getCode() ;
        this.message = resultCodeEnum.getMessage();
    }

    public CustomException(Integer code , String message) {
        this.code = code ;
        this.message = message ;
    }

}

2.业务中抛出Exception

if(sysUser == null) {
    throw new CustomException(ResultCodeEnum.LOGIN_ERROR);
    //throw new RuntimeException("用户名或者密码错误") ;
}

3.添加异常处理方法

在GlobalExceptionHandler.java中添加

@ExceptionHandler(value = CustomException.class)     // 处理自定义异常
@ResponseBody
public Result error(CustomException exception) {
    exception.printStackTrace();
    return Result.build(null , exception.getResultCodeEnum()) ;
}

统一异常处理_第1张图片
统一异常处理_第2张图片

你可能感兴趣的:(java,spring,boot)