init
This commit is contained in:
28
handler/exception.py
Normal file
28
handler/exception.py
Normal file
@@ -0,0 +1,28 @@
|
||||
import http
|
||||
from fastapi import FastAPI, HTTPException, Request
|
||||
from pydantic import ValidationError
|
||||
from fastapi.responses import JSONResponse
|
||||
from uvicorn.server import logger
|
||||
|
||||
exceptions = [Exception, HTTPException, ValidationError]
|
||||
|
||||
|
||||
async def general_exception_handler(request: Request, e: Exception):
|
||||
logger.error(f"[异常处理] 发生异常: {e}")
|
||||
status_code = http.HTTPStatus.INTERNAL_SERVER_ERROR
|
||||
detail = str(e)
|
||||
message = "发生了一些错误"
|
||||
if isinstance(e, HTTPException):
|
||||
status_code = e.status_code
|
||||
message = e.detail
|
||||
return JSONResponse(
|
||||
status_code=status_code,
|
||||
content={"detail": detail, "message": message},
|
||||
)
|
||||
|
||||
|
||||
def install(app: FastAPI):
|
||||
logger.info("[异常处理] 开始加载异常处理器")
|
||||
for exception in exceptions:
|
||||
app.add_exception_handler(exception, general_exception_handler)
|
||||
logger.info("[异常处理] 异常处理器加载完成")
|
||||
Reference in New Issue
Block a user