![c1a2d10fa358070a95b7141e8a3ed177.png](https://img-blog.csdnimg.cn/img_convert/c1a2d10fa358070a95b7141e8a3ed177.png)
课程目标
对 SpringBoot 项目中的所有异常进行响应,处理成统一的格式输出。
操作步骤
添加依赖
添加 spring-boot-starter-web 的依赖
![29d67ace871707d804f433edce917abd.png](https://img-blog.csdnimg.cn/img_convert/29d67ace871707d804f433edce917abd.png)
编码
构建统一输出类,作为项目所有接口的输出对象
![766ccda1139f23e346116884710255f7.png](https://img-blog.csdnimg.cn/img_convert/766ccda1139f23e346116884710255f7.png)
编写异常处理器
- 类上添加 @RestControllerAdvice 注解,是 @ResponseBody 与 @ControllerAdvice 的结合,其中 @ControllerAdvice 用于注册异常处理器,而 @ResponseBody 用于标记该类中所有方法返回类型为 JSON。
- 方法上添加 @ExceptionHandler 注解,用于标记该方法用于处理何种异常。
- 该类中可以同时编写多个方法,用于处理多种异常,Spring 会自行根据异常类型选择执行相应的方法。
![0c97868fc1316ac1092f4e604be9d402.png](https://img-blog.csdnimg.cn/img_convert/0c97868fc1316ac1092f4e604be9d402.png)
编写接口
![ccd14a27ab03eaafc3f6ec9a913c12ba.png](https://img-blog.csdnimg.cn/img_convert/ccd14a27ab03eaafc3f6ec9a913c12ba.png)
编写项目启动类
![61c752dc23e199ad873d9311127d714b.png](https://img-blog.csdnimg.cn/img_convert/61c752dc23e199ad873d9311127d714b.png)
验证结果
编写测试用例
![d558808b991ecaaaee6021f7bd90e245.png](https://img-blog.csdnimg.cn/img_convert/d558808b991ecaaaee6021f7bd90e245.png)
调用测试用例可以看到输出
![85044a539120069fdf07c3e854dc1471.png](https://img-blog.csdnimg.cn/img_convert/85044a539120069fdf07c3e854dc1471.png)
源码地址
本章源码 : https://gitee.com/gongm_24/spring-boot-tutorial.git
总结
通过全局异常处理,可以保证系统在出现异常的情况下,出参结构是统一的,结合接口正常情况下的返回结构,就可以保证整个系统的出参结构一致,这种方式不管是跟前端交互还是跟其它系统交互,都很重要。