2009-12-23 40 views
4

如果我有一个异常被引发,捕获,然后在except:块内再次引发的场景,有没有办法捕获它从中提出的初始堆栈帧?在Python中检索双重异常原始堆栈跟踪

以python退出形式打印的堆栈跟踪描述第二次引发异常的位置。有没有办法引发异常,以显示异常最初抛出的堆栈框架?

回答

11

这是一个常见的错误再次指定异常实例,这样重新抛出异常:

except Exception, ex: 
    # do something 
    raise ex 

这条原来的追踪信息,并开始一个新的。你应该做的,而不是为这个,但没有明确规定除外(即使用“裸” raise):

except Exception, ex: 
    # do something 
    raise 

这将保留在堆栈跟踪的所有原始信息。请参阅this section in the docs以获得有用的背景信息。

+0

这正是我想要的!谢谢! – user196835 2009-12-23 18:42:04