Spring boot 全局异常处理
时间: 2025-01-14 16:50:27 浏览: 44
### 如何在 Spring Boot 中实现全局异常处理
#### 使用 `@RestControllerAdvice` 和 `@ExceptionHandler`
为了实现在整个应用程序中统一处理异常,推荐使用带有 `@RestControllerAdvice` 注解的类。此类不仅能够拦截控制器层发生的异常情况,还可以通过指定特定类型的异常来定制化错误响应逻辑[^2]。
当遇到未被捕获的异常时,Spring 将自动调用匹配的 `@ExceptionHandler` 方法来进行处理。这使得开发者可以集中管理和定义各种可能出现的问题场景下的行为模式,从而简化代码结构并增强可读性和维护性[^1]。
#### 添加必要的依赖项
确保项目已经引入了用于构建Web应用所需的库文件:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
```
此部分配置应放置于项目的 `pom.xml` 文件内以支持后续操作[^3]。
#### 创建全局异常处理器
下面展示了一个简单的例子,说明怎样创建一个专门负责捕捉所有运行期异常(`RuntimeException`) 的组件,并向客户端发送标准化的消息体作为回应:
```java
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
public ResponseEntity<String> handleRuntimeExceptions(final RuntimeException e){
// 记录日志信息 (此处省略具体实现)
return new ResponseEntity<>("An unexpected error occurred", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
```
上述代码片段展示了如何利用 `@RestControllerAdvice` 来标记一个类为全局异常处理器,以及如何运用 `@ExceptionHandler` 对某些特定种类的异常作出反应。对于 REST API 而言,返回 `ResponseEntity<T>` 是一种常见做法,因为它允许灵活控制 HTTP 响应的状态码和主体内容[^4]。
#### 自定义异常视图
除了提供 JSON 或 XML 形式的API级反馈外,有时也需要针对浏览器访问准备HTML格式的友好提示页。为此目的,可以通过扩展 `BasicErrorController` 或者覆盖其默认的行为来满足特殊需求[^5]。
阅读全文
相关推荐

















