在系统运行过程中难免会有异常,那么如何出处理这些异常呢?
保证一些异常出现时,不会导致系统崩溃
我们需要系统出现异常时,反馈给用户或者运维人员 而不是直接崩溃
解决办法:
我们让异常一层一层的往出抛异常 最后使用aop的思想在最外层定义一个类来集中处理这些异常
@ControllerAdvice(annotations = {RestController.class})
@ResponseBody
@Slf4j
public class GlobalException {
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
public R<String> handSqlException(SQLIntegrityConstraintViolationException e){
log.error(e.getMessage());
if (e.getMessage().contains("Duplicate entry")){
return R.error("该账号已被占用");
}
return R.error("未知错误");
}
@ExceptionHandler(CustomException.class)
public R<String> handSqlException(CustomException e){
log.error(e.getMessage());
return R.error(e.getMessage());
}
}
@ControllerAdvice(annotations = {RestController.class})对那些所有的restcontroller进行aop
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
申明这个方法处理那些请求
在做异常中我们要可能出现的异常定义出来 并处理
对其他未知异常也要用Exception进行捕获 保证系统不因异常而停止