20201209_118_try_多个except结构

首页 » Python » 正文

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))

运行结果:
20201209_118_try_多个except结构

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

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

顺便说一下,根据下面两个图表可以看出,异常类ZeroDIvisionError与TypeError不存在子父类关系。
20201209_118_try_多个except结构

未经允许不得转载:作者:1324-易同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《20201209_118_try_多个except结构》 发布于2020-12-10

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录