20 lines
673 B
Python
20 lines
673 B
Python
from fastapi import FastAPI, Request, status
|
|
from fastapi.responses import JSONResponse
|
|
|
|
|
|
class AppException(Exception):
|
|
def __init__(self, code: str, message: str, status_code: int = status.HTTP_400_BAD_REQUEST):
|
|
self.code = code
|
|
self.message = message
|
|
self.status_code = status_code
|
|
super().__init__(message)
|
|
|
|
|
|
def register_exception_handlers(app: FastAPI) -> None:
|
|
@app.exception_handler(AppException)
|
|
async def app_exception_handler(_: Request, exc: AppException) -> JSONResponse:
|
|
return JSONResponse(
|
|
status_code=exc.status_code,
|
|
content={"code": exc.code, "message": exc.message},
|
|
)
|