一、异常的概念
- 当检测到一个错误时,Python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,
- 例如:以
r
方式打开一个不存在的文件
二、捕获异常
1.介绍
- 捕获异常就是对可能出现的bug,进行提前准备、提前处理。
- 当程序遇到了BUG, 那么接下来有两种情况:
- 整个程序因为一个BUG停止运行
- 对BUG进行提醒, 整个程序继续运行
2.异常处理
try:
可能发生错误的代码
except:
可能发生错误的代码
try:
f = open("123.txt", 'r')
except:
print("文件不存在")
3.捕获异常
- 注意:
- 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
- 一般try下方只放一行尝试执行的代码。
- 当捕获多个异常时,可以把要捕获的异常类型的名字,放到except 后,并使用元组的方式进行书写。
try:
可能发生错误的代码
except 异常名称 as 为异常赋予的变量名:
可能发生错误的代码
try:
print(1/0)
except (NameError, ZeroDivisionError) as e:
print('ZeroDivision错误...')
print(e)
try:
print(name)
except Exception as e:
print(e)
try:
print(1)
except Exception as e:
print(e)
else:
print('我是else,是没有异常的时候执行的代码')
- 异常-finally
- finally表示的是无论是否异常都要执行的代码,例如关闭文件。
try:
f = open('ttt.txt', 'r')
except Exception as e:
f = open('ttt.txt', 'w')
else:
print('没有异常,真开心')
finally:
f.close()
三、异常的传递
1.介绍
- 当内层函数中发生异常, 并且没有捕获处理这个异常的时候, 异常会传递到上一层的函数, 当上一层的函数也没有捕获处理这个异常的时候main函数会捕获这个异常, 这就是异常的传递性.
- 当所有函数都没有捕获异常的时候, 程序就会报错
- 利用异常具有传递性的特点, 当想要保证程序不会因为异常崩溃的时候, 就可以在main函数中设置异常捕获, 由于无论在整个程序哪里发生异常, 最终都会传递到main函数中, 这样就可以确保所有的异常都会被捕获