gpt4 book ai didi

python - 获取完整的异常类型/消息和堆栈跟踪

转载 作者:太空狗 更新时间:2023-10-29 22:23:00 26 4
gpt4 key购买 nike

我编写了一个 API,它以下列格式返回 Json...

{"Success": true, Result: {...}}

{"Success": false, ExceptionId: "(some uuid)"}

记录异常。这在原则上很好,因为允许某人讨论错误而不告诉他们它是什么(作为安全措施)。在调试过程中,我还想输出错误消息,以免我不得不一直引用数据库。

就目前而言,问题是从异常中获取有用的信息(返回或登录数据库)

我正在做这样的事情......

try:
Ret['Result'] = <Blah>
Ret['Success'] = True
except Exception as e:
# ... Logging/ExceptionId
if Settings.DebugMode:
Ret['Exception'] = str(e)

如果我在最后一行放置断点并检查 e在 Eclipse 的监 window 口中,我得到 KeyError: 'Something' ,但是 str(e)结果 'Something'这是非常无益的。

我用谷歌搜索,但找不到任何方法从异常中获取正确的消息。显然曾经有一个 .message在 v<2.4 中,但这对我在 3.3 中没有帮助

作为替代方案,我尝试这样做:

Ret['Exception'] = str(type(e)) + ": " + str(e)

结果是 <class 'KeyError'>: 'job'这有点接近了,但开始感觉越来越老套了。

我还想包括一个 Stack Trace,但运气更差 - 我可以得到 __traceback__但当然它不可序列化并调用 str()在它上面只会导致对象的描述,例如 <traceback object at 0x0000000004024E48>

如何获得体面/全面的错误消息?

最佳答案

你可能想要repr:

Ret['Exception'] = repr(e)

对于回溯,使用 traceback module :

from traceback import format_exc
Ret['Traceback'] = format_exc()

关于python - 获取完整的异常类型/消息和堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16035904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com