20201209_118_try_多个except结构

try…多个 except 结构

上一课的结构(指except BaseException:)可以捕获所有的异常,工作中也很常见。但是,从经典理论考虑,一般建议尽量捕获可能出现的多个异常(按照先子类后父类的顺序;如果没有子父类关系那顺序就随意了),并且针对性的写出异常处理代码。为了避免遗漏可能出现的异常,可以在最后增加 BaseException。结构如下:

try:
    被监控的、可能引发异常的语句块
except Exception1:
    处理 Exception1 的语句块
except Exception2:
    处理 Exception2 的语句块
...
except BaseException:
    处理可能遗漏的异常的语句块

【例1】多个except结构的使用

while True:
    try:
        a = input('请输入被除数:')
        if a == 'quit':
            break
        b = input('请输入除数:')
        c = float(a) / float(b)
        print(c)
    except ZeroDivisionError:
        print('异常:除数不能为0')
    except TypeError:
        print('异常:除数和被除数都应为数值类型')
    except NameError:
        print('异常:变量不存在')
    except BaseException as e:
        print(e)
        print(type(e))

运行结果:
在这里插入图片描述

如何用pycharm查看异常的子类父类继承关系

【例2】
第1步,对着异常类名单击鼠标右键,会出现右键菜单
在这里插入图片描述
第2步,在出现的右键菜单中依次选择Diagrams(图表)–>Show Diagram Popup Window(显示图标弹窗)
注:第1个选项Show Diagram…会打开一个大的继承关系图示窗口,适合看复杂的继承关系。
在这里插入图片描述
–>
在这里插入图片描述
然后就弹出气泡窗口显示继承关系了:
在这里插入图片描述

顺便说一下,根据下面两个图表可以看出,异常类ZeroDIvisionError与TypeError不存在子父类关系。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值