gpt4 book ai didi

python - 如何捕获python异常并将回溯文本保存为字符串

转载 作者:行者123 更新时间:2023-12-03 07:51:52 26 4
gpt4 key购买 nike

我正在尝试为我的代码编写一个不错的错误处理程序,以便当它失败时,日志、回溯和其他相关信息会通过电子邮件发送给我。
我不知道如何获取异常对象并提取回溯。
我找到 traceback模块相当困惑,主要是因为它根本不处理异常。它只是从某个地方获取一些全局变量,假设我想要最近的异常。但如果我不这样做呢?如果我想忽略错误处理程序中的一些异常怎么办? (例如,如果我未能向我发送电子邮件并想重试。)
我想要的是

import traceback as tb

# some function that will fail after a few recursions
def myfunc(x):
assert x > 0, "oh no"
return myfunc(x-1)

try:
myfunc(3)
except Exception as e:
traceback_str = tb.something(e)
请注意 tb.something 需要e作为参数 .
Stack Overflow 上有很多关于使用 traceback 的问题。模块来获取回溯字符串。这个问题的独特之处在于如何从捕获的异常中获取它,而不是从全局变量中获取。
结果: traceback_str包含字符串:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in myfunc
File "<stdin>", line 3, in myfunc
File "<stdin>", line 3, in myfunc
File "<stdin>", line 2, in myfunc
AssertionError: oh no
请注意,它不仅包含最近的函数调用,还包含整个堆栈,并在末尾包含“AssertionError”

最佳答案

tb.something(e) 的正确函数是

''.join(tb.format_exception(None, e, e.__traceback__))

关于python - 如何捕获python异常并将回溯文本保存为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62952273/

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