如何解决如何建立一个指向已保存的python追溯的异常?
我正在尝试做一些奇怪的事情。我想在Python中保存堆栈跟踪,然后在以后的行中引发异常时,希望该异常具有我之前保存的堆栈跟踪,而不是默认的回溯。我想给人一种错觉,那就是错误发生在与实际发生错误不同的行上。
为了更具体一点,我希望能够做类似的事情
class Pipeline:
def __init__(self):
saved_traceback = None
def m1(self):
# ... Do some work ....
saved_traceback = save_traceback()
def execute(self):
try:
# .... Do Some work
except Exception as e:
raise SpecialError(saved_traceback)
然后我将运行一个脚本,如:
foo = Pipeline()
foo.m1()
foo.execute()
我想以这样的方式实现execute
:如果在执行过程中出现错误,则回溯指向对m1
的调用。这是一种惰性管道构建领域特定语言的一部分,在调用execute
之前,任何工作都不会发生,因此所有错误消息都将来自execute
。相反,我希望用户看到一个错误,该错误指向添加了错误管道步骤的方法。
解决方法
您可以使用traceback.format_exc()
将追溯保存为字符串。
import traceback
try:
print(a)
except:
traceback_str = traceback.format_exc()
print(a)
将以NameError
失败,因为从未定义a
。在except
块中,最新的回溯将作为字符串保存到traceback_str
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。