在引发异常时,存储由异常创建的对象,Python

时间:2012-04-14 07:35:59

标签: python exception

这是我的异常类,

class SampleError(Exception):
    def __init__(self):
        self.history = Stack()

这是函数,

def f(x):
    raise SampleError

运行f(x)时,如何存储在引发SampleError时创建的堆栈。

一如既往地谢谢!

4 个答案:

答案 0 :(得分:2)

如果通过“store”表示分配给变量进行分析,请使用sys.exc_info()

import sys
try:
    f()
except:
    exc_type, exc, trace = sys.exc_info() # trace is the traceback object

请注意有关规范中的循环引用的警告。

答案 1 :(得分:1)

只需查看traceback模块即可。它将使您能够从任何实例生成回溯。您也可以在进行一些后期处理后以任何形式存储。

答案 2 :(得分:1)

也许你正在尝试做这样的事情???

导入追溯

class SampleError(Exception):
    def __init__(self):
        self.history = traceback.extract_stack()

def f(x):
    raise SampleError

try:
    f(5);
except SampleError, e:
    print e.history
    out = traceback.format_list(e.history)
    print out[0]

答案 3 :(得分:0)

如果您只想访问异常属性:

try:
    f()
except SampleError, error:
    history = error.history