在前后端开发的项目中,我们有统一返回结果类,但是当出现异常时返回的结果通常不统一,前端处理起来比较困难,这是我们就需要统一异常处理。
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()) ;
}