如果我有一个异常被引发,捕获,然后再次在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)
这将保留堆栈跟踪中的所有原始信息.请参阅文档中的此部分,了解有用的背景知识.