SpringBoot-校验-Validation-异常处理

文章目录

准备

       <!--后端校验-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book {

    private Integer id;

    @NotBlank(message = "书名不能为空")
    private String name;
    @NotBlank(message = "作者不能为空")
    private String author;
    @NotBlank(message = "出版社不能为空")
    private String publish; //出版社

    // Integer会有json转换越界问题
    @NotNull(message = "页数不能为空")
    @Min(value = 1,message = "页数至少为1")
    @Max(value = 1000000, message = "页数最多一百万!")
    private Integer pages; //页数


    @NotNull(message = "价格不能为空")
    @Min(value = 0,message = "价格必须大于等于0")
    @Max(value = 2147483647, message = "价格最多一百万!")
    private Float price; //价格

    private Integer bookcaseid;
    private Integer abled;
}

在这里插入图片描述

处理


/**
 * 项目名: nange_book
 * 包名:    com.kcl.exception
 * 文件名   ExceptionHandler
 * 创建者
 * 创建时间: 2021/5/26 9:50 AM
 * 描述  处理全局异常
 */

@RestControllerAdvice
public class GlobalHandler {

    //处理实体类约束异常
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public Result handleValllidException(MethodArgumentNotValidException e, HttpServletResponse resp){
        //resp.setStatus(401);
        String defaultMessage = e.getBindingResult().getFieldError().getDefaultMessage();
        return Result.error(401,defaultMessage);
    }
    

    //处理Json数值转换异常
    @ExceptionHandler(HttpMessageNotReadableException.class)
    public Result handleMessageNotReadable(HttpMessageNotReadableException e, HttpServletResponse resp){
        //写错误码,那么Result就无法返回了
        //resp.setStatus(402);
        //String defaultMessage =  e.getMessage();
        return Result.error(402,"参数数值不符合要求");
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值