===============异常捕获=============
1.异常捕获的作用:
当程序发送异常的时候,默认情况下程序会崩溃,不能接着往后执行,捕获异常就是让程序发生异常的时候不崩溃,继续往后执行
1)什么时候使用:
一般在明明知道代码会出现异常,但又不能通过修改代码去避免的时候
2.捕获异常的语法:
语法1:(捕获所以异常)
try:
代码块1
except:
代码块2
2)说明:
try,except -- 关键字,固定写法
代码块1 -- 需要捕获异常的代码
代码块2 -- 捕获异常后需要执行的代码
3)执行过程:
先执行代码块1,如果执行过程出现异常,程序不会崩溃,而是!直接!执行代码块2,但如果没有异常,就不会执行代码块2
而是直接执行后面的代码
2.语法2:(捕获特定的一种异常类型) 这种比较常用
try :
代码块1
except 异常类型:
代码块2
1)执行过程:会在以上基础上判断异常类型是否是except后面的异常类型,如果是就执行代码块2,如果不是就会直接报错
3.语法3:(捕获多种异常类型)
try:
代码块1
except (异常类型1,异常类型2,异常类型3...):
代码块2
4.语法4:(捕获多种异常类型,并争对不同的异常来执行不同的代码)
try:
代码块1
except 异常类型1:
代码块2
except 异常类型2:
代码块3
.....
try:
nums = [1, 2, 3]
print(nums[5])
print('==========')
except:
print('出现异常')
print('=========')
特定的异常捕获实例:
nums = [1, 2, 3]
person = {'name': '小明', 'age': 18, 'gender': '男'}
try:
sco = person['csore']
num = nums[4]
except KeyError:
print('关键字错误')
3.finally :
上面的四种语法都可以在最后加finally:
并且任何情况都会执行里面的代码(意思就是就算没有捕获到异常,代码报错了还是!会执行!)
finally的实例:
try:
nums = [1, 2, 3]
num = nums[0]
except KeyError:
print('关键字错误')
finally:
print('finally报错还是会执行')
4.抛出异常
让代码子啊某种情况下主动崩溃:
raise 异常类型(可以自定义)
raise 实例:
raise KeyError