上QQ阅读APP看书,第一时间看更新
2.14.2 异常的类型
给定一个值,比如9527,我们可以说这是一个实数,也可以说是一个整数,还可以更具体地说是一个正整数。更具体的类型可以更精确地描述数值的特征。
与此类似,对于异常,Python也设计了一系列的内置类型,这些类型之间有层次关系,如图2-3所示。层次分明的细分异常类型可以帮助我们更好地理解到底发生了什么。
图2-3 常见的异常类型和它们的层次关系
我们来尝试运行一些异常的代码,看看Python抛出的异常类型和给出的异常信息。
除数为0的数学计算,产生ZeroDivisionError。
>>> 3 / 0 ZeroDivisionError: division by zero
尝试打开不存在的文件,产生FileNotFoundError。
>>> open('do_not_exist.txt') FileNotFoundError: [Errno 2] No such file or directory: 'do_not_exist.txt'
字符串和整型数相加,产生TypeError。
>>> 123 + '123' TypeError: unsupported operand type(s) for +: 'int' and 'str'
访问未经声明的变量,产生NameError。
>>> print(abc) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'abc' is not defined
访问不存在的下标位置,产生IndexError。
>>> chars = ['a', 'b', 'c'] >>> chars[9] IndexError: list index out of range