异常处理类
添加BaseExceptionHandler类,然后根据具体异常类型处理
@ControllerAdvice
@ResponseBody
public class BaseExceptionHandler {
/**
* 全局异常捕捉处理
*
* @param e
* @return
*/
@ResponseBody
@ExceptionHandler(value = Exception.class)
public Result errorHandler(Exception e) {
return Result.fail(e.toString());
}
/**
* @valid 参数校验异常处理
* @param e
* @return
*/
@ExceptionHandler(value = BindException.class)
public Result bindHandler(BindException e) {
ObjectError error = e.getAllErrors().get(0);
return Result.fail(error.getDefaultMessage());
}
/**
* spring断言异常处理
* @param e
* @return
*/
@ExceptionHandler(value = IllegalArgumentException.class)
public Result illegalArgumentHandler(IllegalArgumentException e) {
return Result.fail(e.getMessage());
}
}
入参校验及异常处理
添加依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.5.Final</version>
</dependency>
入参对象前添加@Valid
@RequestMapping("login")
public Result login(@Valid UserQuery userQuery){
return Result.succeed(userService.login(userQuery));
}
在字段上添加注解
@NotBlank(message = "用户名不能为空")
@Length(message = "用户名不能超过个 {max} 字符", max = 10)
private String username;
该方式抛出的异常为org.springframework.validation.BindException
spring断言校验及异常处理
Assert.notNull(userDto.getAge(),"年龄不能为空");
该方式抛出的异常为 java.lang.IllegalArgumentException
网友评论