异常就是我们因为一些原因而引发的程序错误,也就是我们常说的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表示的没有异常时要执行的代码
语法:
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表示的是否异常都要执行的代码
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
当我们想要捕获异常时,并不需要找到出现异常的那句话,因为函数之间的调用关系会导致异常传递