美文网首页
spring统一异常处理

spring统一异常处理

作者: ManrayHsu | 来源:发表于2021-05-21 16:40 被阅读0次
异常处理类

添加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

相关文章

网友评论

      本文标题:spring统一异常处理

      本文链接:https://www.haomeiwen.com/subject/tbiwjltx.html