导语
  在项目开发中遇到一个问题,就是通过校验规则判断的内容抛出的异常,并没有被Spring Boot的全局异常捕获机制锁处理。这里提供了如下的解决方案

校验规则引入

  在项目的POM文件中引入如下的依赖项目

    <!--校验规则--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>

使用校验规则

    @NotEmpty(message = "操作状态不能为空")private String optionStatus;// 公告ID@NotNull(message = "公告ID不能为空")private Long noticeId;

  如上面代码所示,如果没有全局异常捕获,则会出现400的异常,并不能返回正常的接口内容。

校验规则的全局异常捕获

  @RestControllerAdvice 返回一个Rest风格的结果, @ExceptionHandler(value = MethodArgumentNotValidException.class) 则是指定出现的异常。

@RestControllerAdvice
public class GlobalExceptionHandler {/*** 处理所有校验失败的异常(MethodArgumentNotValidException异常)* 设置响应状态码为400* @param ex* @return*/@ExceptionHandler(value = MethodArgumentNotValidException.class)@ResponseStatus(HttpStatus.BAD_REQUEST)public AjaxResult handleBindGetException(MethodArgumentNotValidException ex) {// 获取所有异常List<String> errors = ex.getBindingResult().getFieldErrors().stream().map(x -> x.getDefaultMessage()).collect(Collectors.toList());return AjaxResult.error(String.join(",", errors));}
}

总结

  在使用的过程中也可以通过上面这种方式来处理其他的异常。方便实用

Spring Boot 全局异常机制相关推荐

  1. Spring Boot 全局异常捕获

    import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.Control ...

  2. java全局机制,java实现全局异常机制

    先上自己的代码,后整理下原理知识. 下面是自己实现的全局异常机制 1.继承Exception,自定义异常类 ​ package com.zichen.xhkq.exception; /** * * T ...

  3. Spring MVC全局异常后返回JSON异常数据

    Spring MVC全局异常后返回JSON异常数据 参考文章: (1)Spring MVC全局异常后返回JSON异常数据 (2)https://www.cnblogs.com/exmyth/p/560 ...

  4. spring设置全局异常处理器

    spring设置全局异常处理器 参考文章: (1)spring设置全局异常处理器 (2)https://www.cnblogs.com/gongxijun/p/5824723.html 备忘一下.

  5. spring boot 全局异常处理的实现(@ExceptionHandler),以及@InitBinder、@ModelAttribute的作用

    spring boot 全局异常处理的实现(@ExceptionHandler),以及@InitBinder.@ModelAttribute的作用 参考文章: (1)spring boot 全局异常处 ...

  6. Spring Boot 全局懒加载

    文章目录 Spring Boot 全局懒加载 1.简介 2.排除 Bean 3.Spring Boot 全局懒加载的利弊 Spring Boot 全局懒加载 1.简介 Spring Boot 在版本 ...

  7. 基于Spring Boot自动化装配机制实现多数据库适配

    1. 背景说明 一个应用服务可能会用到多种数据库,可以采用多版本方式去管理运作,实际当中,同一套数据库版本可能又会适配不同的客户需求, 这时候再增加版本去维护会比较复杂, 不利于维护,有没办法根据配置 ...

  8. Spring Boot 全局异常处理(400/404/500),顺便解决过滤器中异常未捕获到的问题,让RestApi 任何时候都能获取统一的格式代码

    出发点是为了在系统抛出异常的时候,前端仍然可以获取到统一的报文格式,所以后端所有的异常都得捕获,并处理 Spring boot 在处理异常的时候,500/404默认都会转发到/error,而这个异常的 ...

  9. Spring Boot 全局异常处理

    2019独角兽企业重金招聘Python工程师标准>>> 当我们在开发一个项目时,往往需要对异常进行捕获处理,以提供友好的信息展示给用户.但随着业务的增长,项目越来越复杂,需要捕获异常 ...

最新文章

  1. 百度搜索效果(页面传来数据地址,由服务器去获取)
  2. 9月往后推6个月是几月_成考每年一般几月份颁发毕业证书
  3. 《架构之美》阅读笔记一
  4. 恢复qsecofr密码
  5. POJ3006-Dirichlet's Theorem on Arithmetic Progressions
  6. Windows OS上安装运行Apache Kafka教程
  7. 【英语学习】【Level 08】U02 Movie Time L4 From the page to the big screen
  8. Holer实现手机APP应用外网访问本地WEB应用
  9. Visual Studio 2008 每日提示(六)
  10. SQL SERVER 之 填充因子
  11. hadoop component summary
  12. 【单目标优化求解】基于matlab多子群改进的海洋捕食者算法(MSMPA)求解单目标优化问题【含Matlab源码 1783期】
  13. 折腾BIOS,改开机logo图标
  14. java 租房系统源码,JAVA房屋出租管理系统
  15. HTML跳转到QQ聊天界面
  16. win10--笔记本能连上手机热点,但不能连接WIFI
  17. 基于龙格-库塔法Runge-Kutta的常微分方程的求解matlab仿真
  18. 故障诊断专家系统研究之四-----知识库结构
  19. KMeans算法的K值以及初始类簇中心点的选取
  20. 我的全栈之路-C语言基础之C语言概述与开发环境搭建

热门文章

  1. java 文档比较功能_Java 12 新特性介绍,快来补一补
  2. VC++动态链接库DLL编程深入浅出
  3. Go语言游戏服务器思维导图
  4. 如何让普通用户可以对DBA_SOURCE视图进行闪回查询?
  5. JSP笔记——7.自定义标签
  6. Sublime Text 2 备忘录(phper)
  7. 与时共舞,力求变革【我眼中的戴尔转型】
  8. 跨站式SQL脚本注入的技巧介绍
  9. 2008北京奥运会歌曲推荐
  10. 『线性同余方程和中国剩余定理』