我是非常新的python和fastapi.

@app.exception_handler(Exception)
async def exception_callback(request: Request, exc: Exception):
  logger.error(exc.detail)

但上述方法从未执行过.

class MyException(Exception):
  #some code

@app.exception_handler(MyException)
async def exception_callback(request: Request, exc: MyException):
  logger.error(exc.detail)

我经历了Catch exception type of Exception and process body request #575次.但是这个bug谈到了访问请求体.看到这个虫子后,我觉得应该可以捕捉Exception.

提前感谢:)

推荐答案

如果您想捕获所有未处理的异常(内部服务器错误),有一种非常简单的方法.Documentation

from fastapi import FastAPI
from starlette.requests import Request
from starlette.responses import Response

app = FastAPI()

async def catch_exceptions_middleware(request: Request, call_next):
    try:
        return await call_next(request)
    except Exception:
        # you probably want some kind of logging here
        return Response("Internal server error", status_code=500)

app.middleware('http')(catch_exceptions_middleware)

确保将此中间件放在首位.

Python-3.x相关问答推荐

在多个测试中维护和报告变量

数组列的极点成对求和

如何在输入正确的用户名和密码时添加按钮?

While循环不停止地等待,直到时间.睡眠结束

如何使用Python将嵌套的XML转换为CSV

错误:无法为 pyconcorde 构建轮子,这是安装基于 pyproject.toml 的项目所必需的

匹配语句NaN

python3,将整数转换为字节:对于小整数使用 to_bytes() 有哪些替代方法?

如何使用 Selenium 和 Python 作为线程来使用事件(Chrome-Developer-Tools)?

XPATH:使用 .find_elements_by_xpath 为未知数量的 xpath 输入值

将名字转换成姓氏、首字母和中间字母的格式

参数化泛型不能与类或实例判断一起使用

在 Python 3.5 中使用 aiohttp 获取多个 url

使用 python 正则表达式匹配日期

使用 Python 3 按行进行分析

如何从同一文件夹中的模块导入功能?

Python中的多行日志(log)记录

混合全局/参数和名为top的函数的奇怪python行为

在 Ipython 中使用 Pylint (Jupyter-Notebook)

首次使用后 zip 变量为空