捕获多个异常

捕获多个异常

def test1():
    try:
        print('hello')
        print(name)
        1/0
    except ZeroDivisionError as e:
        print(e)
    except NameError as e:
        print(e)

test1()

结果:
hello
name 'name' is not defined
Process finished with exit code 0

try有两个错误,也没有返回两个错误原因。那捕获多个异常有什么用呢?

视频里说‘当except代码块有多个的时候,当捕获到第一个到时候,就不会往下捕获。’这句话怎么理解呢?不是刚好和捕获多个异常是矛盾的吗?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!

1、捕获多个异常并不是说会返回两个错误原因。多个异常是指except后的Error异常名

程序在执行到第4行代码时会报错,捕获到的异常不符合第一个except,就会去执行第二个except,匹配到对应的异常后输出相应的异常信息,输出异常信息后程序就结束了,代码不会再继续执行,因此不会对第二个错误进行捕获异常。

2、例如代码先报的是ZeroDivisionError错误,第一个except就会捕获到,不会再继续执行except继续捕获,若第一个except捕获不到就会继续向后执行第二个except

https://img1.sycdn.imooc.com//climg/62a70dbe09d60c5906210532.jpg

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师