异常处理概述
什么是服务错误异常处理
- 服务错误异常处理是指在应用程序中捕获和管理处理错误的过程
- 涉及对程序执行中出现的预期和非预期错误的响应
为什么要做错误异常处理
- 提高用户体验: 用户得到清晰的错误信息,而不是不明确的系统报错
- 便于开发者调试: 清晰的错误分类和描述加速问题的解决
- 提高系统鲁棒性: 错误和异常处理是确保程序健壮性的关键
最佳实践
结构化异常处理
- 使用专门的异常类来代表不同类型的错误
- 尽量避免抛出通用异常
统一错误响应
- 错误响应应该有一个统一的格式,不论错误的类型
状态码的正确使用
- Http响应都应该伴随一个准确的Http状态码
全局异常处理
- 实现全局异常处理器来捕获整个应用程序的异常
- 减少在业务逻辑代码中处理异常的需要
日志记录
- 记录异常信息以便于追踪
- 包含足够的上下文以解释异常的原因
ResponseEntity详解
在公开的方法前加入
ResponseEntity<T> method_name(){
return ResponseEntity.ok(T body)
}
- ResponseEntity.ok() ➡️ 200
设置 header
ResponseEntity<T> method_name(){
return ResponseEntity.status(HttpStatus.OK)
.header("headerName", "headerValues")
.body(T body);
}
各状态码设置
// 200
ResponseEntity.ok().herader()
// 404
ResponseEntity.notFound().herader()
模仿AWSException构建山竹异常处理
docs.aws.amazon.com/sdk-for-jav…
需要提供的错误信息
- Returned HTTP status code
- Returned AWS error code(业务错误码)
- Detailed error message from the service in the AwsErrorDetails class
- AWS request ID for the failed request(请求ID,用于追踪错误)
Exceptions and retry behavior(异常重试)
- client-side exceptions:
- RetryableException
- IOException
- UncheckedIOException
- ApiCallAttemptTimeoutException
- HTTP status codes:
- 500
- 502
- 503
- 504