在python中检索双重引发的异常原始堆栈跟踪

use*_*835 4 python exception

如果我有一个异常被引发,捕获,然后再次在except:block中引发的场景,有没有办法捕获引发它的初始堆栈帧?

作为python出口打印的堆栈跟踪描述了第二次引发异常的位置.有没有办法引发异常,以便显示最初抛出异常的堆栈帧?

Pet*_*sen 11

通过再次指定异常实例来重新引发异常是一个常见的错误,如下所示:

except Exception, ex:
     # do something
     raise ex
Run Code Online (Sandbox Code Playgroud)

这将剥离原始的追溯信息并启动一个新的追溯信息.你应该做的是这个,没有明确指定异常(即使用"裸" raise):

except Exception, ex:
    # do something
    raise
Run Code Online (Sandbox Code Playgroud)

这将保留堆栈跟踪中的所有原始信息.请参阅文档中的此部分,了解有用的背景知识.