Сначала я приглашаю познакомиться с базовыми классами исключений в python. Вы можете прочитать их в документе Встроенные исключения
Во-вторых, прочитать переопределение поведения исключений по умолчанию fastApi Переопределить обработчики исключений по умолчанию
Что Вы должны понимать, что @app.exception_handler
принимает любые исключения или дочерние классы, полученные из Exception
. Например, RequestValidationError
- это подкласс python, встроенный в ValueError
, который сам является подклассом Exception
.
Таким образом, вы должны создать свои собственные исключения или выбросить доступные исключения с этим фоном. Я предполагаю, что что-то пошло не так с вашим логгером logger.error(exc.detail)
, который либо не имеет детального поля, либо не имеет правильной конфигурации логгера.
Пример кода:
@app.get("/")
def read_root(response: Response):
raise ArithmeticError("Divide by zero")
@app.exception_handler(Exception)
async def validation_exception_handler(request, exc):
print(str(exc))
return PlainTextResponse("Something went wrong", status_code=400)
Вывод:
Запись stdout и ответ с Something went wrong