python嵌套异常的两种处理器

 更新时间:2024年01月16日 10:12:03   作者:梯阅线条  
在Python中,异常也可以嵌套,本文主要介绍了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嵌套异常处理器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:

相关文章

  • LyScript获取上一条与下一条汇编指令的方法详解

    LyScript获取上一条与下一条汇编指令的方法详解

    LyScript 插件默认并没有提供上一条与下一条汇编指令的获取功能,当然你可以使用LyScriptTools工具包直接调用内置命令得到,本文就为大家详细讲讲如何实现
    2022-07-07
  • Python中parsel两种获取数据方式小结

    Python中parsel两种获取数据方式小结

    本文主要介绍了Python中parsel两种获取数据方式小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Python使用Apache Kafka时Poll拉取速度慢的解决方法

    Python使用Apache Kafka时Poll拉取速度慢的解决方法

    在使用Apache Kafka时,poll方法拉取消息速度慢常见于网络延迟、消息大小过大、消费者配置不当或高负载情况,本文提供了优化消费者配置、并行消费、优化消息处理逻辑和监控调试的解决方案,并附有Python代码示例和相关类图、序列图以帮助理解和实现
    2024-09-09
  • Python类中的装饰器在当前类中的声明与调用详解

    Python类中的装饰器在当前类中的声明与调用详解

    这篇文章主要介绍了Python类中的装饰器在当前类中的声明与调用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Django 跨域请求处理的示例代码

    Django 跨域请求处理的示例代码

    本篇文章主要介绍了Django 跨域请求处理的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • python数据可视化 – 利用Bokeh和Bottle.py在网页上展示你的数据

    python数据可视化 – 利用Bokeh和Bottle.py在网页上展示你的数据

    本文将展示如何使用python搭建一个网页应用来展示你的数据图表 很多有关于使用python搭建网页应用的文章聚焦在如何教读者搭建一个网页应用(大多是博客),很多关于使用python做数据可视化的文章聚焦在如何教读者使用python的图表库来做可视化
    2021-10-10
  • pytorch.range()和pytorch.arange()的区别及说明

    pytorch.range()和pytorch.arange()的区别及说明

    这篇文章主要介绍了pytorch.range()和pytorch.arange()的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • PyTorch高级特性与性能优化方式

    PyTorch高级特性与性能优化方式

    这篇文章主要介绍了PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • 使用Python实现文本转语音(TTS)并播放音频

    使用Python实现文本转语音(TTS)并播放音频

    在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本转换为语音并播放音频文件吧
    2025-03-03
  • 为什么说python适合写爬虫

    为什么说python适合写爬虫

    在本文中,小编给读者们整理的一篇关于分析为什么说python适合写爬虫的语言的相关内容,有兴趣的朋友们可以学习下。
    2020-06-06

最新评论