如:权限不足、数据唯一异常、数据不能为空异常、义务异常等。 这些异常如果不经过处理会对前端开发人员和使用者造成不便,因此我们就需要统一处理他们。
源码位于:源码位于: 模块中的 exception
包中
异常实体
自定义异常
1、通用异常
@Getter
public class BadRequestException extends RuntimeException{
private Integer status = BAD_REQUEST.value();
public BadRequestException(String msg){
super(msg);
}
public BadRequestException(HttpStatus status,String msg){
super(msg);
this.status = status.value();
}
2、实体相关异常
(1) 实体不存在: EntityNotFoundException
(2) 实体已存在:EntityExistException
import org.springframework.util.StringUtils;
/**
* @author Zheng Jie
* @date 2018-11-23
*/
public class EntityExistException extends RuntimeException {
public EntityExistException(Class clazz, String field, String val) {
super(EntityExistException.generateMessage(clazz.getSimpleName(), field, val));
private static String generateMessage(String entity, String field, String val) {
return StringUtils.capitalize(entity)
+ " with " + field + " "+ val + " existed";
}
}
新增用户的时候用户名是唯一的,可判断用户是否存在,抛出异常
全局异常拦截
使用全局异常处理器 @RestControllerAdvice
处理请求发送的异常
@ExceptionHandler:通过@ExceptionHandler的 value 属性可过滤拦截的条件
具体使用
// 通用异常
throw new BadRequestException("发生了异常");
// 通用异常,使用自定义状态码
throw new BadRequestException(HttpStatus.OK, "发送了异常");
// 实体存在异常
throw new EntityExistException(User.class, "email", "elunez@qq.com");
// 实体不存在异常