Pentru a evita scurgerea de detalii interne (stack traces) către clienți și pentru a păstra un format JSON unificat al erorilor (de exemplu cu coduri de eroare de business și mesaje localizate în limba română), FastAPI oferă decoratorul @app.exception_handler().
Poți intercepta atât excepții de business definite de tine, cât și erorile standard de validare RequestValidationError sau erorile native StarletteHTTPException.
Exemplu: Handler global pentru excepție de business personalizată
from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
app = FastAPI()
class InsufficientFundsException(Exception):
def __init__(self, required: float, available: float):
self.required = required
self.available = available
@app.exception_handler(InsufficientFundsException)
async def funds_exception_handler(request: Request, exc: InsufficientFundsException):
return JSONResponse(
status_code=400,
content={
"error_code": "FONDURI_INSUFICIENTE",
"message": "Soldul contului este insuficient pentru această tranzacție.",
"detalii": {
"necesar": exc.required,
"disponibil": exc.available
}
}
)
Întrebări & Exemple de Cod:
Tratarea Globală a Erorilor cu @app.exception_handlerAi o nelămurire despre utilizarea comenzii
Tratarea Globală a Erorilor cu @app.exception_handlersau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.