栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python异常处理语句 try...except...else...

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python异常处理语句 try...except...else...

前面已经讲解了try...except...结构(https://blog.csdn.net/weixin_50486192/article/details/123095521),现在在try...except...结构的基础上,再添加一个else代码块,形成try...except...else...结构,即

try:
    可能产生异常的代码块1
except [(Error1, Error2, ...) [as e]]:
    处理异常的代码块2
except [(Error3, Error4, ...) [as e]]:
    处理异常的代码块3
except [(Exception) [as e]]:
    处理其它异常的代码块n
else:
    代码块1无异常时执行的代码块

当try中的代码块1出现异常,系统就会自动生成相应的异常类型,然后根据异常类型Error进入相应的except分支进行异常处理;如果try代码块没有出现任何异常时,就会直接跳到else的代码块执行。
所以,else的代码块,只有当try的代码块没有出现异常时才会显现出来,否则else中的代码块不会执行。

例1:try中没有出现异常

try:
    a = 10
    b = 2
    c = a / b
except (ValueError, TypeError) as e:     # 该except分支可以同时捕获并处理 ValueError, TypeError这2种类型的异常
    print("ValueError or TypeError:", e)
except (ZeroDivisionError) as e:        # 该except分支可以捕获并处理 ZeroDivisionError 这种类型的异常
    print('ZeroDivisionError:', e)
except(Exception) as e:                 # 未指定具体要捕获的异常类型, 意味着可捕获所有类型的异常,
    print("other exceptions:", e)
else:
    print("result:", c)                 # try 中没有出现异常,会执行
print("continue...")

执行结果:
result: 5.0
continue...

例2:try中出现异常

try:
    a = 10
    b = 0
    c = a / b                           # b作为被除数不能为0,将出现 ZeroDivisionError 的异常
except (ValueError, TypeError) as e:    # 该except分支可以同时捕获并处理 ValueError, TypeError这2种类型的异常
    print("ValueError or TypeError:", e)
except (ZeroDivisionError) as e:        # 该except分支可以捕获并处理 ZeroDivisionError 这种类型的异常
    print('ZeroDivisionError:', e)
except(Exception) as e:                 # 未指定具体要捕获的异常类型, 意味着可捕获所有类型的异常,
    print("other exceptions:", e)
else:
    print("result:", c)                 # try 中出现了异常,不会执行
print("continue...")

执行结果:
ZeroDivisionError: division by zero
continue...

注意:
try中一般不使用return语句,如果try中含有return语句,可能会阻碍到except或else的执行。
例:

def test():
    try:
        print(1)
        return 1
        # raise ValueError()    # 加上这一句后会阻碍except的执行
    except:
        print(2)
        return 2
    else:
        print(3)
        return 3
print('continue...')
print(test())

执行结果:
continue...
1
1

从执行结果可以看出,尽管try中没有出现异常,但是含有return语句,所以在执行else代码块之前就已经返回了,因而执行不到else部分。
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753285.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号