python嵌套异常的两种处理器
python的异常处理器支持嵌套。
1 嵌套的try/except处理器
用法
def f1():
raise E
def f2():
try:
f1()
except E:
pass
try:
f2()
except E:
pass
描述

嵌套的try/except处理器,发生异常时,控制权会跳回具有相符的except分句、最近进入的try语句,except分句拦截处理异常后,会停止异常,不再向外传递。
比如,try语句代码块调用函数f2,同时f2函数代码块也用了try语句代码块,且调用函数f1。若f1发生异常,被f2的try捕获,则异常将会结束,不会再向外传递。
示例
>>> def f1():
print(1+[])
>>> def f2():
try:
f1()
except TypeError:
print('调用f1发生异常')
>>> try:
f2()
except TypeError:
print('调用f2发生异常')
调用f1发生异常
# 等效写法
>>> try:
try:
print(1+[])
except TypeError:
print('内部try发生异常')
except TypeError:
print('外部try发生异常')
内部try发生异常
# raise手动向外传递异常
>>> try:
try:
print(1+[])
except TypeError as te:
print('内部try发生异常')
# raise手动向外传递异常
raise te
except TypeError:
print('外部try发生异常')
内部try发生异常
外部try发生异常
2 嵌套的try/finally处理器
用法
def f1():
raise E
def f2():
try:
f1()
except E:
#except分句代码块
finally:
#finally分句代码块
try:
f2()
except E:
#except分句代码块
finally:
#finally分句代码块
描述

嵌套的try/finally处理器,控制权回到最近进入的try执行finally分句代码块,异常会继续向外传播到所有激活状态下的try语句的finally分句的代码块,直到顶层finally处理器。即嵌套finally拦截异常但不终止异常。
注:不管是否发生异常,finally分句都会执行。
示例
>>> def f1():
print(1+[])
>>> def f2():
try:
f1()
except TypeError:
print('调用f1发生异常')
finally:
print('处理f1的finally')
>>> try:
f2()
except TypeError:
print('调用f2发生异常')
finally:
print('处理f2的finally')
调用f1发生异常
处理f1的finally
处理f2的finally
# 等效写法
>>> try:
try:
print(1+[])
except TypeError:
print('内部try发生异常')
finally:
print('内部try的finally')
except TypeError:
print('外部try发生异常')
finally:
print('外部try的finally')
内部try发生异常
内部try的finally
外部try的finally到此这篇关于python嵌套异常的两种处理器的文章就介绍到这了,更多相关python嵌套异常处理器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python使用Apache Kafka时Poll拉取速度慢的解决方法
在使用Apache Kafka时,poll方法拉取消息速度慢常见于网络延迟、消息大小过大、消费者配置不当或高负载情况,本文提供了优化消费者配置、并行消费、优化消息处理逻辑和监控调试的解决方案,并附有Python代码示例和相关类图、序列图以帮助理解和实现2024-09-09
python数据可视化 – 利用Bokeh和Bottle.py在网页上展示你的数据
本文将展示如何使用python搭建一个网页应用来展示你的数据图表 很多有关于使用python搭建网页应用的文章聚焦在如何教读者搭建一个网页应用(大多是博客),很多关于使用python做数据可视化的文章聚焦在如何教读者使用python的图表库来做可视化2021-10-10
pytorch.range()和pytorch.arange()的区别及说明
这篇文章主要介绍了pytorch.range()和pytorch.arange()的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-08-08


最新评论