全局异常处理类
创建步骤
定义一个自己的全局错误处理类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 ( "未知错误" ) ;
}
}
结果展示
未完待续!!!