** 在项目实现的时候,对于某些异常,编写一个全局异常,来处理 **
全局异常
@ControllerAdvice(annotations = {RestController.class, Controller.class})
@ResponseBody
public class GlobalExceptionHandler {
/**
* 异常处理方法
*
* @return
*/
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex) {
log.error(ex.getMessage());
if (ex.getMessage().contains("Duplicate entry")) {
String[] split = ex.getMessage().split(" ");
String msg = split[2] + "已存在";
return R.error(msg);
}
return R.error("未知错误");
}
/**
* 自定义异常处理方法
*
* @return
*/
@ExceptionHandler(CustomException.class)
public R<String> exceptionHandler(CustomException ex) {
log.error(ex.getMessage());
return R.error(ex.getMessage());
}
}
@ControllerAdvice(annotations = {RestController.class, Controller.class})
:此注解的意思是加了@RestController @Controller会进行拦截
@ResponseBody
:此注解的意思是将结果封装成json数据返回
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
:处理SQLIntegrityConstraintViolationException异常