如何在嵌套的tryexcept块中重新引发异常?

如何在嵌套的tryexcept块中重新引发异常?,第1张

如何在嵌套的try / except块中重新引发异常?

从Python 3开始,回溯存储在异常中,因此

raise e
(大多数)正确的事情很简单:

try:    something()except SomeError as e:    try:        plan_B()    except AlsoFailsError:        raise e  # or raise e from None - see below

产生的追溯将包括

SomeError
在处理过程中发生的其他通知
AlsoFailsError
(由于位于
raise e
内部
exceptAlsoFailsError
)。这具有误导性,因为实际发生的是相反的情况-
我们
AlsoFailsError
在尝试从恢复时遇到并处理了它
SomeError
。要获取不包含的回溯
AlsoFailsError
,请替换
raisee
raise e from None

在Python
2中,您将异常类型,值和回溯存储在局部变量中,并使用以下三种参数形式

raise

try:    something()except SomeError:    t, v, tb = sys.exc_info()    try:        plan_B()    except AlsoFailsError:        raise t, v, tb


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5630474.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存