/**
* * 全局异常处理
* 对RestController和Controller注解的类进行异常捕获 */
@ControllerAdvice(annotations = {RestController.class, Controller.class})
@ResponseBody
@Slf4j
public class GlobalExceptionHandler {
/**
* 异常处理方法
* 对SQLIntegrityConstraintViolationException这个类型的异常进行拦截
* @return
*/
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){
/*
对错误信息进行筛选,确保是重复昵称导致的sql错误
错误信息格式为 Duplicate entry 'xxx' for key 'xxxxxx'
*/
if(ex.getMessage().contains("Duplicate entry")){
//获取重复昵称
String[] split = ex.getMessage().split(" ");
String msg = split[2] + "已存在";
return R.error(msg);
}
return R.error("未知错误");
}
}