我们可以从异常中获取堆栈跟踪吗?

2024-04-25 22:21:28 发布

您现在位置:Python中文网/ 问答频道 /正文

要获取stacktrace,我使用:

except:
    import traceback
    print(traceback.format_exec())

我可以不使用回溯从异常中获取stacktrace吗?例如:

except Exception as e:
    print(e)
    print(e.traceback) #is there command like this?

Tags: importformatisasexceptionthiscommandlike
3条回答

您需要traceback。您可以将它与e一起使用。您应该在代码开始时导入它,而不需要每次发生异常时都导入它

import traceback

try:
    ...
except Exception as e:
    tb = traceback.format_exc()
    print(e)
    print(tb)

使用回溯模块-可在此处找到更多信息: https://docs.python.org/3/library/traceback.html

except Exception as e:
    print(e)
    traceback.print_exc(file=sys.stdout)

或者先将其保存为变量,如下所示:

except Exception as e:
    print(e)
    st = traceback.format_stack()
    print(st)

如果不使用回溯模块,我们应该能够使用sys.exc_info获得更多详细信息。这将返回包含回溯信息的元组:

try:
    ...
except Exception as e:
    tb = sys.exec_info()[2]
    ...

回溯对象包含有关发生错误的堆栈帧和行号的信息

这就是追踪在引擎盖下的用途

相关问题 更多 >