什么是异常?
异常就是我们因为一些原因而引发的程序错误,也就是我们常说的BUG
例:
捕获异常(异常处理)
我们在程序运行中时,经常会出现异常,因此我们需要对有可能出现的异常进行提前准备,提前处理,在经过异常处理后,我们的程序还能继续运行
语法:
try:
可能出现错误的代码
except:
出现错误后执行的代码
try:
#没有aaa.txt文件
#发生错误的代码
f = open("aaa.txt","r",encoding = "UTF-8")
except:
#错误出现时运行的代码
f = open("aaa.txt", "w")
捕获指定异常
语法:
try:
可能出现错误的代码
except 指定错误 as e:
出现错误后执行的代码
try:
f = open("aaaa.txt","r",encoding = "UTF-8")
except FileNotFoundError as e:
f = open("aaaa.txt", "w")
注意:如果出现的错误类型与指定错误类型不同时将不会捕捉异常
一般try下只放一行尝试执行的代码
捕捉多个异常
try:
可能出现错误的代码
except (NameError,FileNotFoundError):
出现错误后执行的代码
try:
f = open("aaaa.txt","r",encoding = "UTF-8")
except (FileNotFoundError,NameError):
f = open("aaaa.txt", "w")
捕获所有的异常
语法:
try:
可能出现错误的代码
except Exception as e:
出现错误后执行的代码
try:
f = open("aaaa.txt","r",encoding = "UTF-8")
except Exception as e:
f = open("aaaa.txt", "w")
异常else
else表示的没有异常时要执行的代码
语法:
try:
可能出现错误的代码
except Exception as e:
出现错误后执行的代码
else:
没有异常时执行的代码
try:
f = open("aaaa.txt","r",encoding = "UTF-8")
except Exception as e:
f = open("aaaa.txt", "w")
else:
print("现在没有异常")
现在没有异常
异常finally
finally表示的是否异常都要执行的代码
try:
可能出现错误的代码
except Exception as e:
出现错误后执行的代码
else:
没有异常时执行的代码
finally:
最后一定执行的代码
try:
f = open("aaaa.txt","r",encoding = "UTF-8")
except Exception as e:
f = open("aaaa.txt", "w")
else:
print("现在没有异常")
finally:
f.close()
异常的传递性
异常具有传递性
例:
def demo1():
print("demo1 start")
num = 1/0
print("demo1 end")
def demo2():
print("demo2 start")
demo1()
print("demo2 end")
def demo3():
print("demo3 start")
demo2()
print("demo3 end")
def test():
try:
demo3()
except Exception as e:
print("异常为:"+str(e))
test()
demo3 start
demo2 start
demo1 start
异常为:division by zero
当我们想要捕获异常时,并不需要找到出现异常的那句话,因为函数之间的调用关系会导致异常传递