首页 > 解决方案 > 从异常中获取函数调用堆栈

问题描述

当 python 函数失败时,我们会得到一个列出文件名、行和函数调用的回溯。

无论如何,在一个块内,是否except提取这些函数名称?我只想列出导致失败的连续调用。

我查看了traceback库并运行dir()了我的异常,但我什么也没看到。

标签: python-3.x

解决方案


我最后看了一下traceback文档并弄清楚了。

首先,用于traceback.extract_tb()获取StackSummary. 这是一个FrameSummary对象列表,它们本身是元组,其第三个值是函数名。在全:

try:
  some_function()
except Exception as e:
  tb = traceback.extract_tb(e.__traceback__)
  for frame in tb:
    print(frame[2])

输出将类似于

<module>
some_function
another_func_called_by_some_function
...

推荐阅读