在程序中,发生异常经常遇见的,例如打开不存在的文件,除数为0等,如果我们处理程序发出的异常,程序在遇到异常时就不会继续执行
a = 1/0
print("exit")
程序在执行上面a = 1/0
时,会报出ZeroDivisionError
异常,如果不处理ZeroDivisionError
异常,程序就不出继续执行print("exit")
try…except
在高级语言中,都会引入异常处理语法,python也不例外,在python中,通过使用try....except
语法,来解决一般异常问题,例如上面的代码写成下面形式
try:
a = 1/0
except ZeroDivisionError as e:
print("program error")
print(e)
print("exit")
执行结果如下
try…except…else
当然,我们还需要考虑到如果try中都是执行成功了,没有报错异常,程序需要执行其他操作,这时我们就需要使用try....except...else
语法,例如下面的流程
try:
a = 1/1
except ZeroDivisionError as e:
print("program error")
print(e)
else:
print("ok")
print("exit")
执行结果如下,由于在try
块中没有发生异常,因此,except
块就不执行,从而执行else
块
try…except…else…finally
异常处理终结版try....except...else...finally
,在finally块中,无论try块中是否发生异常,finally块都会执行。整个执行流程如下。
try:
a = 1/1
except ZeroDivisionError as e:
print("program error")
print(e)
else:
print("ok")
finally:
print("finally")
print("exit")
整个执行结果如下