Day 15 异常捕获
1.异常捕获
1.什么是异常:程序运行的时候报错了,我们程序出现了异常
程序异常的后果:程序会在异常的地方直接结束,不会往后继续执行
2.异常捕获:
目的:当程序出现异常的时候,程序不崩溃还可以接着执行后面的代码
什么时候需要捕获:知道某个地方会因为不可控因素出现异常时就可以使用异常捕获(例如用户的不当操作)
age = int(input('请输入年龄:')) # 如果输入非数字会捕获异常
print(f'年龄是:{age}')
异常捕获的语法:
语法1:—— 捕获所有类型异常
try:
代码段1
# 需要捕获异常的代码
except:
代码段2
# 异常出现后会执行的代码
try、except - 关键字;固定写法
先执行try后面的代码段1,如果没有异常,接着执行后面的代码(不会执行代码段2):
如果代码段1在执行的时候出现异常,程序不崩溃,直接执行except后面的代码段2
try:
age = int(input('请输入年龄:'))
except:
print('年龄输入有误')
age = 0
print(f'年龄是:{age}')
print('-------------')
练习:打开指定的文本文件,如果文件存在就读文件中的内容,如果不存在就创建文件。
try:
with open('./new.txt', 'r', encoding='utf-8') as f:
print(f.read())
except:
with open('./new.txt', 'w', encoding='utf-8') as f:
pass
语法2: —— 捕获指定类型的异常
try:
代码段1
# 需要捕获异常的代码
except 异常类型:
代码段2
# 异常出现后会执行的代码
语法3:—— 同时捕获多种异常,针对不同异常进行相同处理
try:
代码段1
except(异常类型1,异常类型2,....):
代码段2
语法4:—— 同时捕获多种异常,针对不同异常进行不同处理
try:
代码段1
except 异常类型1:
代码段11
except 异常类型2:
代码段22
except 异常类型3:
代码段 33
3.关键字finally
finally的存在的存在不影响异常捕获的执行
finally后面的代码不管try里面的代码是不管try里面的代码发生了什么情况都会执行。(就算代码1出现异常没有被捕获的时候)
try:
代码段1
# 需要捕获异常的代码
except:
代码段2
# 异常出现后会执行的代码