从异常中获取函数调用堆栈

时间:2018-08-10 15:01:58

标签: python-3.x

当python函数失败时,我们将获得一个追溯,列出文件名,行和函数调用。

无论如何,在except块中是否仅提取这些功能名?我只需要列出导致失败的连续调用的列表。

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

1 个答案:

答案 0 :(得分:1)

我最后查看了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
...