栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

重新引发Python异常并保留堆栈跟踪

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

重新引发Python异常并保留堆栈跟踪

在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
属性中附加了原始上下文,并且可能不是您想要的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/659601.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号