统一异常处理对于我们开发效率提升了不少,以前做电商的时候项目还是SSH搭建的,对于每次异常都是try catch 或者往上抛出,最后才进行处理。现在有了统一异常处理,我们简直什么都不用管,直接统一处理一下,简单而快捷的快发方式。
本章目标
springboot统一捕获异常,处理全局异常信息,返回前端可识别的json数据。
构建项目

我们本次需要连接数据库,我们先把controller-->service-->dao打通




接着我们配置yml文件,启动测试


可以看到接口已经通了,数据库也已经创建好了,但是现在没数据,我们插入一条试试




接着我们开始我们的异常信息处理。
自定义异常类

响应到客户端的json信息实体。

异常信息处理类。

这里我们使用了两个方法处理,一个处理我们自定义的异常信息,一个是全局处理异常。接着我们在controller手动抛出异常信息。一个抛出MyException异常信息,一个我们什么都不管,在方法上面直接throws Exception,因为我们已经建好了异常处理类。所以异常信息肯定是会被处理的,假设我们没有建立异常处理,getAll方法坑定是by zero异常信息,我们来验证一下。

测试异常处理
可以看到getAll方法并没有抛出by zero 异常信息,getUserInfoByUserName也成功返回了我们自定义的异常信息到客户端了。


这里有几个注解需要说明一下
@ControllerAdvice 这个没有什么可说的
@RestControllerAdvice 这个只要知道@Controller,@RestController,@ResponseBody的关系就知道 RestControllerAdvice 这个注解是什么意思了
@ExceptionHandler指定异常处理类型
@ResponseStatus注解用于配置遇到该异常后返回数据时的StatusCode的值,我们这里默认使用值500

配套源码地址:https://gitee.com/yangyao742425545/chapter7




