springcloud全局异常处理
时间: 2025-01-05 10:31:26 浏览: 9
### 实现 Spring Cloud 中的全局异常处理
在微服务架构中,统一管理和标准化错误响应至关重要。通过实现全局异常处理器可以确保应用程序中的任何未捕获异常都能得到妥善处理并返回一致的错误消息给调用者。
#### 使用 `@ControllerAdvice` 注解创建全局异常控制器
为了集中管理所有 REST API 的异常情况,在项目里定义一个带有 `@ControllerAdvice` 注解的类[^1]:
```java
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleAllExceptions(Exception ex) {
ErrorResponse errorResponse = new ErrorResponse(
"INTERNAL_SERVER_ERROR",
HttpStatus.INTERNAL_SERVER_ERROR.value(),
ex.getMessage()
);
return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
```
这里展示了如何捕捉所有的异常并将它们转换成结构化的 JSON 响应体发送回客户端。对于特定类型的业务逻辑异常,则可以根据需求自定义更具体的处理器方法。
#### 定义错误响应模型
为了让前端更容易解析来自后端的服务状态码和提示信息,建议封装一个通用的数据传输对象用于表示API级别的错误详情:
```java
public class ErrorResponse {
private String code; // 错误编码
private int status; // HTTP 状态码
private String message; // 用户友好的报错描述
// 构造函数、getter/setter 方法省略...
}
```
这种做法不仅提高了系统的可维护性和扩展性,还使得不同模块之间的交互更加清晰明了。
阅读全文