异常对象
[TOC]
目录:
一、如何捕获异常对象
二、捕获异常对象演示
三、try 语句
一、如何捕获异常对象
当程序运行过程中出现异常以后,所有的异常信息都会被保存在一个专门的异常对象中,而异常传播时,实际上就是异常对象抛给了调用处。如果except后跟着一个异常的类型,那么只会捕获该类型的异常,比如:
ZeroDivisionError 类的对象用来表示除 0 异常
Nameerror 类的对象用来处理变量错误的异常
如果 except 后没有任何内容,则此时会捕获到所有异常, Exception 是所有异常类的父类,相当于 except,所以如果 except 后跟着 Exception,也会捕获到所有异常。在异常类后面跟着 as xx 此时 xx 就是异常对象,但通常情况下没有特别大的作用。运用 finally 子句即无论是否出现异常,该子句都会执行,所以通常将必须执行的代码放在 finally 子句中。
二、捕获异常对象演示
print('异常出现前')
l=[]
try:
# print(c)
# print(10/0)
# l[10]
l + 'hollo'
except NameError:
print('出现NameError异常')
except ZeroDivisionError:
print('出现ZeroDivisionError异常')
except IndexError:
print('出现IndexDivisionError异常')
except Exception as e:
print('未知异常',e,type(e))
finally:
print('无论是否出现异常,该子句都会执行')
print('异常出现后')
三、try 语句
将可能出错的代码放入到 try 语句中,如果代码没有错误,则会正常执行,如果出现错误,则会执行 except 子句中的代码,通过这种方式处理异常,避免给因为一个异常导致整个程序的终止。try 语句如下:
try:
代码块(可能出现错误的语句)
except 异常类型 as 异常名:
代码块(出现错误以后的处理方式)
except 异常类型 as 异常名:
代码块(出现错误以后的处理方式)
...
else:
代码块(没出错时要执行的语句)
finally:
代码块(该代码块总会执行)
其中 try 语句是必须的,else 语句可有可无,except 和 finally 至少有一个即可。