python嵌套异常处理器

1 python嵌套异常处理器

python的异常处理器支持嵌套。

1.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发生异常

1.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发生异常
内部tryfinally
外部tryfinally

相关推荐

  1. Python异常处理

    2023-12-28 12:04:03       40 阅读
  2. python--异常处理

    2023-12-28 12:04:03       42 阅读
  3. Python爬虫--异常处理

    2023-12-28 12:04:03       27 阅读
  4. Python异常处理

    2023-12-28 12:04:03       36 阅读
  5. Python异常处理

    2023-12-28 12:04:03       33 阅读
  6. python 异常处理、随机数、

    2023-12-28 12:04:03       32 阅读
  7. Python异常处理

    2023-12-28 12:04:03       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-28 12:04:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-28 12:04:03       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-28 12:04:03       87 阅读
  4. Python语言-面向对象

    2023-12-28 12:04:03       96 阅读

热门阅读

  1. 清除conda和pip缓存的方法

    2023-12-28 12:04:03       55 阅读
  2. 正则表达式2 常见模式

    2023-12-28 12:04:03       61 阅读
  3. github和gitee上比较有影响力的python爬虫项目

    2023-12-28 12:04:03       50 阅读
  4. Spring中的@Resource/@Autowired/@Primary/@Qualifier

    2023-12-28 12:04:03       56 阅读
  5. posixpath库----Python

    2023-12-28 12:04:03       55 阅读
  6. Jetpack Compos一些三方库的使用

    2023-12-28 12:04:03       50 阅读
  7. QT6 C++ 开发指南

    2023-12-28 12:04:03       45 阅读
  8. 2312d,原始写

    2023-12-28 12:04:03       58 阅读
  9. 59.0/滤镜的使用(详细版)

    2023-12-28 12:04:03       43 阅读