全局异常处理类
创建步骤
- 定义一个自己的全局错误处理类GlobalExceptionHandler
- 创建一个ExceptionHandler类,主要是用@ControllerAdvice和 @ExceptionHandler处理错误信息
以下说明各个注解的作用:
- @ControllerAdvice(annotations = {RestController.class, Controller.class })//表示拦截类上加了RestController和Controller注解的controller
- @ResponseBody//如果有方法需要返回json数据的就需要加上此注解,最终把结果封装成json数据返回
- @Slf4j //写日志
- @ExceptionHandler(SQLIntegrityConstraintViolationException.class)//表示这个方法处理的就是 SQLIntegrityConstraintViolationException中的错误信息,根据错误类型定
- 以上完成的是基本的异常处理,之后会通过枚举实现一些常用错误的封装,因为考虑到会有很多常用的报错信息,为了降低代码的重复和方便将来批量修改,在此基础上改动。
源代码示例
@ControllerAdvice(annotations = {RestController.class, Controller.class })
@ResponseBody
@Slf4j
public class GlobalExceptionHandler {
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){
log.info(ex.getMessage());
if(ex.getMessage().contains("Duplicate entry")){
String[] split = ex.getMessage().split(" ");
String msg = split[2] + "已存在";
return R.error(msg);
}
return R.error("未知错误");
}
}
结果展示

未完待续!!!