在Python 2中,您需要使用所有三个参数来引发:
raise failingThread.exc_info[0], failingThread.exc_info[1], failingThread.exc_info[2]
来自
help('raise'):
如果存在而不是第三个对象
None,则它必须是一个回溯对象(请参阅 “标准类型层次结构”
一节),并且将其替换为发生异常的位置,而不是当前位置。如果存在第三个对象而不是回溯对象或None,TypeError则会引发异常。三表达式形式的raise有助于在except子句中透明地重新引发异常,但是raise如果要重新引发的异常是当前作用域中最近活动的异常,则不希望使用任何表达式。
在这种特殊情况下,您不能使用no表达式版本。
对于Python 3(根据注释):
raise failingThread.exc_info[1].with_traceback(failingThread.exc_info[2])
或者您可以简单地使用
raise ... from ...链接异常,但是会引发一个链接的异常,并在 cause
属性中附加了原始上下文,并且可能不是您想要的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)