错误:在运行前发现
异常:在运行时报出
常见的异常类型
NameError | 尝试访问一个未命名的变量 |
ZeroDivisionError | 除数为0 |
IndexError | 索引超出范围 |
KeyError | 请求一个不存在的字典变量 |
IOError | 输入输出错误 |
AttributeError | 访问未知对象属性 |
ValueError | 数值错误 |
TypeError | 类型错误 |
AssertionError | 断言错误 |
IndentationError | 格式错误(可能没有缩进) |
“Exception”已经包含了大部分的错误类型,是其他错误的父类,可以通过它来捕捉常见的异常。
异常捕获:
为什么要进行异常捕获处理:
- 不能将代码报错直接呈现给用户,而要通过异常处理的方式
- 如果有异常,后面的代码都会挂起不会执行
(1)try....except
try:
要执行的语句
except:
如果异常类型与异常关键字相匹配,执行下面的语句
异常处理语句
try:
1 / 0
except ZeroDivisionError:
print("ZeroDivisionError")
(2))try....多个except语句
try:
data = [1, 2, 3]
data[5]
except ZeroDivisionError:
print("ZeroDivisionError")
except IndexError:
print("IndexError")
except IndexError:
print("IndexError")
(3)try...except ..... as e
try:
要执行的语句
except 错误类型 as e:
异常处理语句
as + 关键字 以用来对错误数据的处理
try:
data = [1, 2, 3]
data[5]
except IndexError as e:
print(e, data[1])
list index out of range 2
(4)try...except...finally
无论是否捕捉到异常都会执行最后的命令,达到收尾的作用
try:
data = [1, 2, 3]
data[5]
except IndexError as e:
print(e, data[1])
finally:
print("错误处理完毕")
list index out of range 2
错误处理完毕