"""
1、出现异常:
(1)整个程序因为一个bug停止运行
(2)对bug进行提醒,整个程序继续运行
(3)捕获异常: 提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续手段
语法:
try:
可能发生错误的代码
except:
如果出现异常执行的代码
(4)捕获指定异常:
语法:
try:
print(name)
except NameError as e:
print('name变量名称未定义错误')
注意事项:
如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常
一般try下方只放一行尝试执行的代码
(5) else表示的是如果没有异常要执行的代码
try:
print(name)
except NameError as e:
print('name变量名称未定义错误')
else:
print(没有异常所要执行的代码)
(6) finally表示的是无论是否异常都要执行的代码,例如关闭文件等
try:
print(name)
except NameError as e:
print('name变量名称未定义错误')
else:
print(没有异常所要执行的代码)
finally:
print(无论有没有异常都要执行的代码)
2、异常的传递性
当函数fun1中发生异常,并且没有捕获处理这个异常的时候,异常会传递到函数fun2,
当fun2也没有捕获处理这个异常的时候,main函数会捕获这个异常,这就是异常的传递性。
注意:
当所有函数都没有捕获异常的时候,程序就会报错。
"""
# 捕获异常
try:
f = open("./test/123.txt","r",encoding="UTF-8")
except:
print("出现异常,将模式改为w:")
f = open("./test/123.txt","w",encoding="UTF-8")
f.close()
# 捕获指定异常
try:
print(name)
except NameError as e:
print("出现了变量未定义的异常!")
# 捕获多个异常
try:
1/0
print(name)
except (ZeroDivisionError,NameError) as e:
print("捕获除数为0.和变量未定义的异常,",e)
# 捕获所有异常:
try:
# print("出现异常错误的地方!!")
print("hello")
except Exception as e:
print("捕获到异常啦",e)
else:
print("没有异常") # hello 没有异常
finally:
print("无论如何,我都要执行")
# 上述代码,在异常时执行的结果是:
# 捕获到异常啦 name 'fjwi' is not defined
# 无论如何,我都要执行
# 上述代码在正常执行的时候运行的结果是:
# hello
# 没有异常
# 无论如何,我都要执行
# 异常的传递
def fun1():
print("fun1---我有异常")
print(name)
def fun2():
print("fun2---我没有异常!")
fun1()
try:
fun2()
except:
print("根据异常的传递性捕获到异常:")
# 运行结果:
# fun2---我没有异常!
# fun1---我有异常
# 根据异常的传递性捕获到异常:
python中异常相关概念(代码演示)
最新推荐文章于 2024-06-14 09:50:01 发布