1.什么是异常
程序运行的时候报错了,我们程序出现了异常
2.异常捕获
- 目的:当程序出现异常的时候,程序不崩溃还可以接着执行后面的代码
- 什么时候需要捕获:明明知道某个地方会出现异常,但是代码没有问题(用户的不当操作),这个时候就可以使用异常捕获
语法1: - 捕获所有类型的异常
try:
代码段1
except:
代码段2
finally:
代码段3
说明:
try、except - 关键字;固定写法
代码段1 - 需要捕获异常的代码
代码段2 - 捕获到异常后会执行的代码
执行过程:先执行try后面的代码段1,如果没有异常,直接执行后面的其他代码(不会执行代码段2);
如果代码1在执行的时候出现异常,程序不崩溃,直接(马上)执行except后面的代码段2
语法2: - 捕获指定类型的异常
try:
代码段1
except 异常类型:
代码段2
finally:
代码段3
语法3: - 同时捕获多种异常,针对不同异常进行相同的处理
try:
代码段1
except (异常类型1, 异常类型2,…):
代码段2
finally:
代码段3
语法4: - 同时捕获多种异常,针对不同异常进行不同的处理
try:
代码段1
except 异常类型1:
代码段11
except 异常类型2:
代码段22
…
finally:
代码段3
try:
age = int(input('请输入年龄:'))
print('****')
except:
print('年龄输入有误')
age = 0
print(f'年龄是:{age}')
print('+++++++++++')
# 练习:打开指定的文本文件,如果文件存在就读文件中的内容
# 如果不存在就创建这个文件。
try:
with open('./aaa.txt', 'r', encoding='utf-8') as f:
print(f.read())
except:
print('改文件不存在!')
with open('./aaa.txt', 'w', encoding='utf-8') as f:
pass
try:
list1 = [10, 20, 30]
print(list1[3])
print({'a': 10, 'b': 20}['aa'])
except IndexError:
print('出现异常')
3.关键字finally
finally的存在不影响原来异常捕获的执行
finally后面的代码是不管try里面的代码发生了什么情况都会执行。(就算代码段1出现异常没有被捕获到finally后面的代码也会执行)
try:
print('hello world!')
# print('abc'[100])
print({'a': 19}['b'])
except IndexError:
print('出现了异常!')
finally:
print('写遗书')