我试图在全球范围内捕获未处理的异常。所以在 main.py
文件的某处,我有以下内容:
@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 和 process body request #575 。但是这个错误谈论访问请求正文。看到这个bug,感觉应该可以catch Exception
。我使用的 FastAPI 版本是: fastapi>=0.52.0
。
提前致谢 :)
更新
有多种答案,在此感谢所有读者和作者。我在我的应用程序中重新访问了这个解决方案。现在我看到我需要设置 debug=False
,默认它是 False
,但我把它设置为 True
server = FastAPI(
title=app_settings.PROJECT_NAME,
version=app_settings.VERSION,
)
当@iedmrc 评论@Kavindu Dodanduwa 给出的答案时,我似乎错过了它。
原文由 Ajeet Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您想捕获所有未处理的异常(内部服务器错误),有一种非常简单的方法可以做到。 文档
确保将此中间件放在其他一切之前。