python fastapi add_exception_handler
时间: 2025-06-30 12:11:41 浏览: 8
在 FastAPI 应用中添加自定义异常处理器可以通过 `@app.exception_handler()` 装饰器实现,这一机制允许开发者捕获特定的异常并返回定制化的响应。例如,可以为 `HTTPException` 添加一个全局处理器,以统一处理所有由应用抛出的 HTTP 错误。
以下是一个示例,展示如何添加一个自定义异常处理器来捕获和处理 `HTTPException`:
```python
from fastapi import FastAPI, HTTPException
from fastapi.responses import JSONResponse
app = FastAPI()
@app.exception_handler(HTTPException)
async def http_exception_handler(request, exc):
# 返回一个自定义的 JSON 响应,包含状态码和错误信息
return JSONResponse(
status_code=exc.status_code,
content={"error": exc.detail},
)
@app.get("/example")
async def example_endpoint():
# 抛出一个 HTTP 异常
raise HTTPException(status_code=400, detail="Bad request")
```
上述代码中,当 `/example` 端点被调用时,会抛出一个 `HTTPException`,其状态码为 400,错误信息为 "Bad request"。由于已经定义了针对 `HTTPException` 的异常处理器,该异常会被捕获,并通过 `JSONResponse` 返回一个格式化的 JSON 响应[^1]。
此外,还可以为非 HTTP 特定的异常(如自定义异常类)添加处理器。例如,定义一个名为 `CustomError` 的异常类,并为其添加一个处理器:
```python
class CustomError(Exception):
pass
@app.exception_handler(CustomError)
async def custom_error_handler(request, exc):
return JSONResponse(
status_code=500,
content={"error": "Internal server error"},
)
@app.get("/custom-example")
async def custom_example_endpoint():
# 抛出自定义异常
raise CustomError()
```
在这个例子中,当 `/custom-example` 端点被调用时,会抛出一个 `CustomError` 异常。该异常会被 `custom_error_handler` 捕获,并返回一个状态码为 500 的 JSON 响应,内容为 "Internal server error"[^1]。
这种机制不仅提升了错误处理的一致性,还增强了用户体验,因为客户端可以接收到结构化且有意义的错误信息。
### 相关问题
1. 如何在 FastAPI 中使用中间件进行请求拦截和处理?
2. 如何在 FastAPI 中实现 JWT 身份验证?
3. 如何限制 FastAPI 应用中的并发请求数量?
4. 如何在 FastAPI 中记录日志以便调试异常?
阅读全文
相关推荐


















