day_14_异常处理
1.异常捕获
正常情况下程序出现异常,程序会直接崩溃,不能接着往后执行。异常捕获就是为了让程序出现异常的时候不崩溃,自己处理异常。
使用异常捕获的前提:无法自己控制(例如,客户的输入)
语法
1) try-except : 能捕获除了语法错误外的所有错误
try:
代码块1
except:
代码块2
执行过程
先执行代码块1,在执行代码块1的过程中如果出现异常,程序不崩溃直接执行代码块2。如果没有出现异常,不执行代码块2直接执行其他语句
2)
try:
代码段1
except 错误类型:
代码段2
执行过程
先执行代码段1,如果在执行代码段1的过程中出现异常,检查出现的异常类型是否和except后面的异常类型是否一致,如果一致程序不崩溃,直接执行代码段2;如果不一致,程序直接崩溃。如果没有异常,直接执行后面其它语句。
3)捕获多种异常
try:
代码段1
except (异常类型1,异常类型2, ...):
代码段2
4)
try:
代码段1
except 异常类型1:
代码段2
except 异常类型2:
代码段3
except 异常类型3:
代码段4
5)
上述的4种结构的最后都可以加上一个finally: 代码块;不管try里面的代码有没有异常,异常有没有被捕获,finally后面的代码都会执行。一般可以在这个地方做一些数据的保存和备份操作。
抛出异常:主动让程序崩溃
1)语法
raise 异常类型
注意:异常类型可以是系统自带的,也可以是程序员自定义(要求异常类型必须是Exception的子类)