![](https://img.kancloud.cn/a3/70/a37089eeff0087497686b5e733112e6a_1300x877.png) ### ![](https://img.kancloud.cn/ef/3e/ef3e3883b0ae98b7762a53af428efa67_1214x971.png) ### 在这段代码中,`@ControllerAdvice`注解和`exceptionHandler`方法的作用如下: ## 关于上图代码的解释如下: **`@ControllerAdvice` 是 Spring Framework 提供的一个注解,用于全局处理控制器中的异常**、数据绑定和数据预处理。它的主要作用是: 1. **全局异常处理**:可以用来定义全局的异常处理逻辑,所有控制器中的异常都会经过这里处理。 2. **数据绑定**:可以用于全局的数据绑定操作。 3. **模型属性**:可以用于全局的模型属性处理。 通过使用 `@ControllerAdvice`,我们可以将散落在各个控制器中的异常处理逻辑集中起来,便于维护和管理。 `exceptionHandler` 方法的作用是处理所有类型的异常。具体来说: 1. **@ExceptionHandler 注解**:`@ExceptionHandler(value = Exception.class)` 表明这个方法会处理所有 `Exception` 类型的异常(包括它的子类)。当控制器中抛出异常时,这个方法会被调用。 2. **@ResponseBody 注解**:`@ResponseBody` 表明该方法的返回值会直接作为 HTTP 响应体返回,而不是视图名称。这使得我们可以直接返回 JSON 或其他格式的数据。 3. **方法逻辑**: - 创建一个 `CommonResp` 对象,这是一个自定义的响应对象。 - 记录异常日志:使用 `LOG.error("系统异常:", e);` 将异常信息记录到日志中,方便后续排查问题。 - 设置响应对象的 `success` 属性为 `false`,表示请求处理失败。 - 将异常信息设置到 `commonResp` 对象的 `content` 属性中,以便客户端可以了解具体的错误信息。 - 返回 `commonResp` 对象,作为 HTTP 响应返回给客户端。 总体来说,**`@ControllerAdvice` 和 `exceptionHandler` 方法的组合使得应用程序可以集中处理异常,并统一返回标准的错误响应,提升代码的可维护性和一致性**。 ### 这个时候当再次发生报错的时候就会给出统一的错误响应结果了 ![](https://img.kancloud.cn/a2/88/a28822ec9fd96520b7bb0bc59f9b0f19_1160x269.png)