本文介绍了重新提炼Python异常并保留堆栈跟踪的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我试图捕获一个线程中的一个异常,并在主线程中重新提出: import threading import sys class FailingThread(threading.Thread): def run(self): try: raise ValueError('x')除了ValueError: self.exc_info = sys.exc_info() failingThread = FailingThread() failingThread.start() failingThread.join() print failingThread.exc_info raise failingThread.exc_info [1] 这基本上可以产生以下输出: (< type'exceptions.ValueError '> ValueError('x',),< traceback对象在0x1004cc320>)追溯(最近的最后一次调用):文件test.py,第16行,<模块> ; raise failingThread.exc_info [1] 但是,异常的来源指向行16,重新发生的地方。原来的例外来自第7行。如何修改主要线程,以便输出如下: 追溯(最近的最后一次调用):文件test.py,第7行,< module> 解决方案您需要使用所有三个参数来加注: / p> raise failingThread.exc_info [0],failingThread.exc_info [1],failingThread.exc_info [2] 传递跟踪对象作为第三个参数保留堆栈。 从 help('raise'):In this particular case you cannot use the no expression version. 这篇关于重新提炼Python异常并保留堆栈跟踪的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 10-21 05:06