{site_name}

{site_name}

🌜 搜索

PythonStackSummary 对象是 Python 异常类中的一种对象,

Python 𝄐 0
python的stack,python import stack,python stack.pop,python中stack函数,python的struct.pack,python stack unstack
PythonStackSummary 对象是 Python 异常类中的一种对象,用于描述当前代码执行时的函数调用栈信息和异常信息。它包含了错误发生时程序在调用栈上的所有帧(frames)的信息,如文件名、行号、函数名、局部变量等,以及异常类型和异常消息。

以下是一个例子,展示了如何创建和使用 PythonStackSummary 对象:

python
import traceback

def f():
g()

def g():
h()

def h():
1/0

try:
f()
except Exception as e:
tb = traceback.extract_tb(e.__traceback__)
print(type(tb)) # 输出 <class 'list'>
print(len(tb)) # 输出 3,表示调用栈有三层
print(type(tb[0])) # 输出 <class 'tuple'>
print(tb[0][0]) # 输出 'example.py'
print(tb[0][1]) # 输出 10,表示在 example.py 的第 10 行出错
print(tb[0][2]) # 输出 'f'
print(tb[0][3]) # 输出 'g()'
print(tb[-1][0]) # 输出 ZeroDivisionError,即引发的异常类型
print(tb[-1][1]) # 输出 'h'
print(tb[-1][2]) # 输出 '1/0'


在上面的例子中,当执行到 h() 函数内部的 1/0 时,会抛出 ZeroDivisionError 异常。由于该异常没有被处理,最终会传播到顶层的 try-except 块中。在 except 块中,我们通过 traceback.extract_tb() 方法获取到了一个 PythonStackSummary 对象的列表,表示当前程序调用栈上的所有帧。我们可以通过遍历该列表,逐个输出每个帧的信息,从而了解程序执行时的调用栈和异常信息。