异常概念
异常是指程序中的例外,违例,影响程序正常执行的情况
异常机制是指程序出现错误后,程序的处理方法
当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理
如果程序执行过程中发生了异常,我们没有进行异常处理,那么程序就会中止执行下面的代码,但是如果我们进行了异常处理,程序会继续执行下面的代码
异常的定义
try:
<语句>#可能发生异常的代码
except<名字>:
<语句>#如果引发了‘name’异常,活的附加的异常对象
else:
<语句>#如果没有异常发生
将可能发生异常的语句,放到try语句块中,让except语句捕获异常信息处理
>>> try:
... fp = open("D:\\file.txt","r")
... fp.write("text")
... fp.close()
... except IOError:
... print("文件写入失败")
... else:
... print("文件写入成功")
...
文件写入失败
异常工作原理
try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中做标记,当异常出现并捕获后继续执行后续的代码,try子句先执行,接下来会发生什么依赖于执行时是否出现异常
1)如果当try后的语句执行时发生异常,python就跳出try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)
2)如果在try后的语句里发生了异常,却没有匹配的except子句,异常将递交到上层的try,或者到程序的最上层(这样江结束程序,并打印缺省的出错信息)。
3)如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。
备注:不管执行try语句是否发生异常,都将会执行finally语句块的语句(如果有finally语句的话)
注意:捕获异常中可以再嵌套捕获异常,直到不会有新的异常发生为止
嵌套try的异常捕获实例
>>> import sys
>>> try:
... try:
... 1/0
... except IOError:
... print("IOError occur")
... except Exception as e:
... print(e)
...
division by zero
except不带任何异常类型
1)except可以不带参数,不是捕获所有的异常,如果加了特定的参数,表示捕获特定的异常,
2)except参数可以有多个,每个参数间用逗号分隔
实例:使用不带参数的try-except语句捕获所有发生的异常,但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息,因为它捕获了所有的异常
>>> try:
... n = 0
... print(10/n)
... except:
... print("做除法时,发生异常")
...
做除法时,发生异常
excepttpxce‘c‘xe带iad多种异常h‘cy类型gnil‘x
可以‘yk使用no‘ysh一个ey‘gexcepttpxce ‘ce‘x语句来处理多个类型异常,也可以针对不同的异常,分别写一个except语句,其格式如下:
try:
#可能发生异常的代码
except(Exception1[,Except2[,......ExceptN]]]):
#如果发生了任何异常列表中发生的异常,将会执行这里的代码
else:
#如果没有发生异常将会执行这里的代码
try:
#可能发生异常的代码
except Exception1:
#异常语句1
except Exception2:
#异常语句2
except Exception3:
#异常语句3
else:
#else要执行的语句
原文地址:https://www.cnblogs.com/xiaoloinzi/p/10339042.html