异常概念

异常是指程序中的例外,违例,影响程序正常执行的情况

异常机制是指程序出现错误后,程序的处理方法

当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理

如果程序执行过程中发生了异常,我们没有进行异常处理,那么程序就会中止执行下面的代码,但是如果我们进行了异常处理,程序会继续执行下面的代码

 

异常的定义

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不带任何异常类型

1except可以不带参数,不是捕获所有的异常,如果加了特定的参数,表示捕获特定的异常,

2except参数可以有多个,每个参数间用逗号分隔

实例:使用不带参数的try-except语句捕获所有发生的异常,但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息,因为它捕获了所有的异常

>>> try:

...     n = 0

...     print(10/n)

... except:

...     print("做除法时,发生异常")

...

做除法时,发生异常

 

excepttpxce'c'xeiad多种异常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要执行的语句

posted on 2019-01-30 17:26  小林子要好好生活  阅读(142)  评论(0编辑  收藏  举报