gpt4 book ai didi

python - 如何在 python 中恢复旧的回溯? (例如倒数第二个)

转载 作者:太空宇宙 更新时间:2023-11-03 12:08:03 27 4
gpt4 key购买 nike

我确定您遇到过这种情况,而且我怀疑没有办法摆脱这种情况。假设您运行了一些引发异常的 python 代码,然后您想查看它但在这样做时不小心引发了另一个异常。如果您现在尝试事后调试,您将看到后一个异常的回溯。我的问题是,前者是否永远消失了?

例子:

def my_buggy_function(x):
y = x + 1
raise RuntimeError

第 1 步:我提出了一个错误,我想对其进行调试

my_buggy_function(1)


---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
/home/user/<ipython-input-1-430423eaff77> in <module>()
3 raise RuntimeError
4
----> 5 my_buggy_function(1)

/home/user/<ipython-input-1-430423eaff77> in my_buggy_function(x)
1 def my_buggy_function(x):
2 y = x + 1
----> 3 raise RuntimeError
4
5 my_buggy_function(1)

RuntimeError:

第 2 步:我尝试调试错误但不小心引发了另一个错误(在这种情况下,我没有加载 pdb)

 pdb.pm() #Oops..

---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/home/user/<ipython-input-2-619d77b83f20> in <module>()
----> 1 pdb.pm()

NameError: name 'pdb' is not defined

import pdb

第 3 步:现在回溯给了我最后一个错误,倒数第二个错误丢失了。

 pdb.traceback.print_last()
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/IPython/core/interactiveshell.py", line 2538, in run_code
exec code_obj in self.user_global_ns, self.user_ns
File "<ipython-input-1-619d77b83f20>", line 1, in <module>
pdb.pm()
NameError: name 'pdb' is not defined

如果我想在倒数第二个回溯中访问 y,它会永远丢失吗?

注意:我正在使用 ipython/ipdb 以防万一

最佳答案

Exception chaining仅在 Python 3 中可用。在 2.X 系列中不可用。

有关详细信息,请参阅此答案:https://stackoverflow.com/a/16414892/1055722

编辑:仔细阅读,您不是在谈论两个嵌套异常,而是一个接一个的异常?

在那种情况下,您可以使用 sys.excepthook 捕获并存储最近 10 个异常(例如)的某处,以便您可以从 pdb 中查看异常历史记录。

关于python - 如何在 python 中恢复旧的回溯? (例如倒数第二个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20518048/

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