Python异常处理
1、try...except
我们写程序的时候,会出现一些错误或异常,导致程序终止。例如,做除法时,除数为0,会引起一个ZeroDivisionError,例如:
a=5 b=0 c=a/b print(c) #以上执行结果抛出异常: Traceback (most recent call last): File "D:/test/Pythonlianxi/day8/异常处理.py", line 25, in <module> c=a/b ZeroDivisionError: division by zero
程序因为ZeroDivisionError而中断了,语句print 没有运行。为了处理异常,我们使用try...except,更改代码:
a=10 b=0 try: c=a/b print (c) except ZeroDivisionError as e: #这个e代表错误信息,如果上面的两行代码出现了ZeroDivisionError这个错
print(e)
print('除数不能为0')
运行结果:
division by zero
除数不能为0
这样程序就不会因为异常而中断,从而print('除数不能为0')语句正常执行,我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except
捕获所有异常:如果不知道代码会发生什么样的异常,但是也想把异常捕捉到该怎么处理呢,可以使用Exception,这样代码就不会因为异常而终止运行,例如:
a=10 b=0 try: c=a/b print (c) except Exception as e:#这个e代表错误信息,如果上面的两行代码出错 print(e) print('出错了')
运行结果:
division by zero
出错了
2、try ....except...else 语句
当没有异常发生时,else中的语句将会被执行,else语句不是必须写的,也可以不写。例如:
a=10 b=5 try: c=a/b # print (c) except Exception as e:#这个e代表错误信息,如果上面的两行代码出错 print(e) print('出错了') else:# 没有出错,也不是必须写的 print('并没有出错') # 这个是没有异常的时候走 print(c)
运行结果:
并没有出错
2.0
3、try ...finally
无论异常是否发生,在程序结束前,finally中的语句都会被执行。例如:
出错了:
a=10 b=0 try: c=a/b except Exception as e:#这个e代表错误信息,如果上面的两行代码出错 print(e) print('出错了') else:# 没有出错,也不是必须写的 print('并没有出错') # 这个是没有异常的时候走 print(c) finally:#不管出错或者没有出错都会执行它,也不是必须写的。 print('我是finally')
运行结果:
division by zero
出错了
我是finally
没有出错:
a=10 b=5 try: c=a/b except Exception as e:#这个e代表错误信息,如果上面的两行代码出错 print(e) print('出错了') else:# 没有出错,也不是必须写的 print('并没有出错') # 这个是没有异常的时候走 print(c) finally:#不管出错或者没有出错都会执行它,也不是必须写的。 print('我是finally')
运行结果:
并没有出错
2.0
我是finally