首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最后与python中except、raise中的异常重写

最后与python中except、raise中的异常重写
EN

Stack Overflow用户
提问于 2015-12-13 16:24:43
回答 1查看 12.4K关注 0票数 29
代码语言:javascript
复制
try:
   #error code
except Exception as e:
   print 'error',e
   raise miexp("malicious error")  
   #userdefined exception, miexp
finally:
   print 'finally'

为什么输出采用以下格式?

输出:

代码语言:javascript
复制
error
finally
malicious error

实际上,我的预期是:

代码语言:javascript
复制
error
malicious error
finally

为什么会这样呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-13 16:27:43

miexp("malicious error")未被处理,因此它将结束程序的执行。另一方面,保证执行finally块。

为了确保这一点,Python在实际引发异常之前执行finally块。从documentation

如果在任何子句中发生异常但未处理,则会临时保存该异常。执行finally子句。如果存在已保存的异常,则在finally子句的末尾重新引发该异常。

票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34249269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档