3 异常
布尔微信:Matongxue_6
# 课程:异常
# 目标
- 了解异常
- 捕获异常
- 异常的else
- 异常的finally
# 一.了解异常
当python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的'异常'。
例如: 以r方式打开一个不存在的文件
open('test.txt','r')
1
执行结果:
# 二.捕获异常
# 2.1语法
try:
可能发生错误的代码
except:
如果出现异常执行的代码
1
2
3
4
2
3
4
# 2.2快速体验
需求:尝试以r模式打开文件,如果文件不存在,则以w方式打开
try:
f = open('test.txt','r')
except:
f = open('test.txt','w')
1
2
3
4
2
3
4
# 2.3捕获指定异常
# 2.3.1语法
try:
可能发生错误的代码
except 异常类型:
如果捕获到该异常类型执行的代码
1
2
3
4
2
3
4
# 2.3.2体验
try:
print(num)
except NameError:
print('有错误')
1
2
3
4
2
3
4
注意:
1.如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
2.一般try下方只放一行尝试执行的代码
# 2.3.3 捕获多个指定异常
当捕获多个异常时,可以把要捕获的异常的名字,放到except后,并使用元组的方式进行存储
try:
print(1/0)
except (NameError,ZeroDivisionError):
print('有错误')
1
2
3
4
2
3
4
# 2.3.4捕获异常描述信息
try:
print(num)
except NameError as result:
print(result)
1
2
3
4
2
3
4
# 2.3.5捕获所有异常
Exception是所有程序异常类的父类
try:
print(num)
except Exception as result:
print(result)
1
2
3
4
5
2
3
4
5
# 三.异常的else
else表示的是如果没有异常要执行的代码
try:
print(1)
except Exception as result:
print(result)
else:
print('我是else,是没有异常的时候执行的代码')
1
2
3
4
5
6
2
3
4
5
6
# 四.异常的finally
finally 表示的是无论是否异常都要执行的代码,例如关闭文件
try:
f = open('test.txt','r')
except Exception as result:
f = open('test.txt','w')
else:
print('没有异常,真开心')
finally:
f.close()
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 4.1 体验案例
import time
try:
f = open('test.txt')
try:
while True:
content = f.readline()
if len(content)==0
break
time.sleep(2)
print(content)
except:
print('意外终止了读取数据')
finally:
f.close()
print('关闭文件')
except:
print('没有这个文件')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 五.主动引发异常
Python 中还可以使用 raise 抛出一个指定的异常
语法是:raise Exception('自定义异常信息')
status = -1#这个变量表示系统运行状态
if status == 1:
print('各部件正常,机器运转')
elif status == 2:
print('核心温度过高,降低运行速度')
elif status ==-1:
print('部件警报,立即停机')
raise Exception('自主引发一个异常')
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
上次更新: 2023/09/05, 02:16:11