//拦截加了RestController和Controller注解的类
@ControllerAdvice(annotations = {RestController.class, Controller.class})
@ResponseBody//返回的是json对象
@Slf4j
public class GlobalExceptionHandler {
/**
* 异常处理方法
* @return
*/
//遇到SQLIntegrityConstraintViolationException异常时的处理
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){
log.error(ex.getMessage());
//这个异常信息代表违反了唯一约束,进一步处理
if(ex.getMessage().contains("Duplicate entry")){
//通过异常信息按空格分成数组,索引2的元素就是重复的id,提示该id存在
String[] split = ex.getMessage().split(" ");
String msg = split[2] + "已存在";
return R.error(msg);
}
return R.error("未知错误");
}
}