暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

python嵌套异常处理器

原创 梯阅线条 2024-01-08
103

1 python嵌套异常处理器

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

1.1 嵌套的try/except处理器

用法

def f1(): raise E def f2(): try: f1() except E: pass try: f2() except E: pass

描述

clip_image002.jpg

嵌套的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分句代码块

描述

clip_image004.jpg

嵌套的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

2 END

本文首发微信公众号:梯阅线条

更多内容参考python知识分享或软件测试开发目录。

文章转载自梯阅线条,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论