程序运行的过程中出现了错误
避免程序中止,提前准备处理可能出现的异常
在可能出现异常的地方,做好提前准备,当真的出现异常的时候,可以有后续手段。
try:
可能发生错误的代码
except:
如果出现异常执行的代码
# 未发生错误try全部代码都会执行
# 未发生错误不会执行except中的代码
# 发生错误try中只会执行到报错行为止的代码
# 发生错误会执行except中的代码
首次执行,文件不存在,程序未报错中止,而是转而执行except中代码,创建文件
try:
print("r模式打开") # 执行
f = open("C:/code/观止.txt", "r") # 报错
print("r模式打开") # 不执行
except:
print("w模式打开") # 执行
f = open("C:/code/观止.txt", "w") # 执行
print("w模式打开") # 执行
try:
print("r模式打开") # 执行
f = open("C:/code/观止.txt", "r") # 执行
print("r模式打开") # 执行
except:
print("w模式打开") # 不执行
f = open("C:/code/观止.txt", "w") # 不执行
print("w模式打开") # 不执行
try:
可能发生错误的代码
except 待捕获异常名 as 别名:
如果出现异常执行的代码
捕获未定义变量产生的错误
try:
print(name) # 未定义变量,报错
except NameError as e:
print('name变量名称未定义错误')
try:
f = open("C:/code/study.txt", "r") # 文件不存在,报错
except NameError as e:
print('文件不存在')
例如
try:
f = open("C:/code/study.txt", "r")
except Exception as e:
print('文件不存在')
try:
可能发生错误的代码
except (异常名1,异常名2) as 别名:
如果出现异常执行的代码
# 示例一:
try:
f = open("C:/code/study.txt", "r")
except (FileNotFoundError, NameError) as e:
print('文件不存在')
# 示例二:
try:
print(name)
except (FileNotFoundError, NameError) as e:
print('名称未定义')
try:
print(num) # 未定义,报错
except (NameError, ZeroDivisionError) as e:
print(e) # 打印 name 'num' is not defined
出现异常,打印结果与(4.2)一致
try:
print(num) # 未定义,报错
except (NameError, ZeroDivisionError) as e:
print(e) # 打印 name 'num' is not defined
else:
print("无异常") # 有异常,不执行
try:
print("正常") # 不报错
except (NameError, ZeroDivisionError) as e:
print(e) # 不执行
else:
print("无异常") # 执行
之前提过,如果open文件却一直未close且程序未中止,将一直占用文件无法操作
如果打开文件后发生异常,未close也将导致一直占用,因此可选择在finally中close
global f
try:
f = open("C:/code/aaa.txt", "r")
except Exception as e:
print(e)
finally:
f.close() # 一定会执行close操作
异常是具有传递性的(向上一级抛出)
阅读量:519
点赞量:0
收藏量:0