python学习之旅(七)
查看更多可以关注
查看首页或点击下方专栏目录
程序运行的过程中出现了错误
定义:在程序运行中,检测到一个错误,程序中止运行并且出现了一些错误的提示,也称作BUG
例如:读取一个不存在的文件f = open("C:/code/观止.txt", "r")
避免程序中止,提前准备处理可能出现的异常
在可能出现异常的地方,做好提前准备,当真的出现异常的时候,可以有后续手段。
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('文件不存在')
格式一:当待捕获异常名为Exception
可以捕获所有类型异常,作用与(1)一致
try:
f = open("C:/code/study.txt", "r")
except Exception as e:
print('文件不存在')
格式二:把要捕获的异常类型的名字,放到except 后,并使用元组的方式进行书写。
基本格式:
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
else表示的是如果没有异常要执行的代码。
使用示例:
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("无异常") # 执行
finally表示的是无论是否异常都要执行的代码
使用示例:
global f
try:
f = open("C:/code/aaa.txt", "r")
except Exception as e:
print(e)
finally:
f.close() # 一定会执行close操作
异常是具有传递性的(向上一级抛出)
点击跳转Python模块与包(八)