Проверяет умение проектировать отказоустойчивую обработку исключений в backend-сервисах.
Используйте try/except для перехвата ошибок.
Логируйте исключения с контекстом (например, через logging).
Возвращайте пользователю понятные HTTP-статусы (500, 400).
Для критичных ошибок настраивайте алерты (Telegram, Sentry).
Практические шаги в Python:
Базовый перехват:
def process_data(data):
try:
# Код, который может сломаться
result = data["value"] / data["divider"]
except KeyError:
logging.error("Отсутствует ключ в данных")
raise HTTPException(status_code=400, detail="Invalid data")
except ZeroDivisionError:
logging.error("Деление на ноль")
raise HTTPException(status_code=422, detail="Cannot divide by zero")
except Exception as e:
logging.critical(f"Неизвестная ошибка: {e}")
raise HTTPException(status_code=500)Глобальный обработчик (FastAPI):
from fastapi import FastAPI, HTTPException
app = FastAPI()
@app.exception_handler(HTTPException)
async def custom_handler(request, exc):
return JSONResponse(
status_code=exc.status_code,
content={"error": exc.detail}
)Интеграция с Sentry:
import sentry_sdk
sentry_sdk.init(dsn="ВАШ_DSN")
try:
risky_operation()
except Exception as e:
sentry_sdk.capture_exception(e) # Отправка в SentryВывод:
Обработка ошибок должна быть централизованной, информативной и не «проглатывать» исключения.