Spring Boot 全局异常机制
导语
在项目开发中遇到一个问题,就是通过校验规则判断的内容抛出的异常,并没有被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 全局异常机制相关推荐
- Spring Boot 全局异常捕获
import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.Control ...
- java全局机制,java实现全局异常机制
先上自己的代码,后整理下原理知识. 下面是自己实现的全局异常机制 1.继承Exception,自定义异常类 package com.zichen.xhkq.exception; /** * * T ...
- Spring MVC全局异常后返回JSON异常数据
Spring MVC全局异常后返回JSON异常数据 参考文章: (1)Spring MVC全局异常后返回JSON异常数据 (2)https://www.cnblogs.com/exmyth/p/560 ...
- spring设置全局异常处理器
spring设置全局异常处理器 参考文章: (1)spring设置全局异常处理器 (2)https://www.cnblogs.com/gongxijun/p/5824723.html 备忘一下.
- spring boot 全局异常处理的实现(@ExceptionHandler),以及@InitBinder、@ModelAttribute的作用
spring boot 全局异常处理的实现(@ExceptionHandler),以及@InitBinder.@ModelAttribute的作用 参考文章: (1)spring boot 全局异常处 ...
- Spring Boot 全局懒加载
文章目录 Spring Boot 全局懒加载 1.简介 2.排除 Bean 3.Spring Boot 全局懒加载的利弊 Spring Boot 全局懒加载 1.简介 Spring Boot 在版本 ...
- 基于Spring Boot自动化装配机制实现多数据库适配
1. 背景说明 一个应用服务可能会用到多种数据库,可以采用多版本方式去管理运作,实际当中,同一套数据库版本可能又会适配不同的客户需求, 这时候再增加版本去维护会比较复杂, 不利于维护,有没办法根据配置 ...
- Spring Boot 全局异常处理(400/404/500),顺便解决过滤器中异常未捕获到的问题,让RestApi 任何时候都能获取统一的格式代码
出发点是为了在系统抛出异常的时候,前端仍然可以获取到统一的报文格式,所以后端所有的异常都得捕获,并处理 Spring boot 在处理异常的时候,500/404默认都会转发到/error,而这个异常的 ...
- Spring Boot 全局异常处理
2019独角兽企业重金招聘Python工程师标准>>> 当我们在开发一个项目时,往往需要对异常进行捕获处理,以提供友好的信息展示给用户.但随着业务的增长,项目越来越复杂,需要捕获异常 ...
最新文章
- 百度搜索效果(页面传来数据地址,由服务器去获取)
- 9月往后推6个月是几月_成考每年一般几月份颁发毕业证书
- 《架构之美》阅读笔记一
- 恢复qsecofr密码
- POJ3006-Dirichlet's Theorem on Arithmetic Progressions
- Windows OS上安装运行Apache Kafka教程
- 【英语学习】【Level 08】U02 Movie Time L4 From the page to the big screen
- Holer实现手机APP应用外网访问本地WEB应用
- Visual Studio 2008 每日提示(六)
- SQL SERVER 之 填充因子
- hadoop component summary
- 【单目标优化求解】基于matlab多子群改进的海洋捕食者算法(MSMPA)求解单目标优化问题【含Matlab源码 1783期】
- 折腾BIOS,改开机logo图标
- java 租房系统源码,JAVA房屋出租管理系统
- HTML跳转到QQ聊天界面
- win10--笔记本能连上手机热点,但不能连接WIFI
- 基于龙格-库塔法Runge-Kutta的常微分方程的求解matlab仿真
- 故障诊断专家系统研究之四-----知识库结构
- KMeans算法的K值以及初始类簇中心点的选取
- 我的全栈之路-C语言基础之C语言概述与开发环境搭建