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不存在子父类关系。

5055

被折叠的 条评论
为什么被折叠?



