Browse Source

Add support for handling several exceptions with the same handler

pull/13241/head
mr-mapache 3 months ago
parent
commit
36d4f3b3bd
  1. 16
      fastapi/applications.py

16
fastapi/applications.py

@ -4539,7 +4539,7 @@ class FastAPI(Starlette):
def exception_handler( def exception_handler(
self, self,
exc_class_or_status_code: Annotated[ *exc_classes_or_status_codes: Annotated[
Union[int, Type[Exception]], Union[int, Type[Exception]],
Doc( Doc(
""" """
@ -4565,11 +4565,13 @@ class FastAPI(Starlette):
def __init__(self, name: str): def __init__(self, name: str):
self.name = name self.name = name
class AnotherUnicornException(Exception)
def __init__(self, name: str):
self.name = name
app = FastAPI() app = FastAPI()
@app.exception_handler(UnicornException, AnotherUnicornException)
@app.exception_handler(UnicornException)
async def unicorn_exception_handler(request: Request, exc: UnicornException): async def unicorn_exception_handler(request: Request, exc: UnicornException):
return JSONResponse( return JSONResponse(
status_code=418, status_code=418,
@ -4577,9 +4579,9 @@ class FastAPI(Starlette):
) )
``` ```
""" """
for exc_class_or_status_code in exc_classes_or_status_codes:
def decorator(func: DecoratedCallable) -> DecoratedCallable: def decorator(func: DecoratedCallable) -> DecoratedCallable:
self.add_exception_handler(exc_class_or_status_code, func) self.add_exception_handler(exc_class_or_status_code, func)
return func return func
return decorator return decorator

Loading…
Cancel
Save