您的位置:首页技术文章
文章详情页

Python异常处理中容易犯得错误总结

浏览:7日期:2022-06-16 18:20:51
目录Python异常处理机制容易犯的错误1容易犯的错误2总结Python异常处理机制

Python异常处理中容易犯得错误总结

如果try异常处理中存在finally,finally中的代码总会得到执行

下面例子只是作为演示,不用去纠结业务逻辑

容易犯的错误1

看下面的代码,写出输出结果

def dig_dig1(): while True:print('I’m in while loop')try: print('I’m in try') raise EOFErrorexcept IOError: print('IOEoor')finally: print('I’m in finally') breakdig_dig1()

原以为会输出的结果:

I’m in while loopI’m in tryI’m in finallyEOFErrorProcess finished with exit code 1

运行结果

I’m in while loopI’m in tryI’m in finallyProcess finished with exit code 0 如果异常处理中存在finally, finally总会被执行; 那么在执行finally之前,try中的产生的异常将会被临时保存起来,当finally的代码执行完成后,再抛出异常; 但当finally中存在raise或return或break时, try中的异常将会被抛弃。容易犯的错误2

看下面的代码,写出输出结果

def dig_dig2(index): try:print('I’m in try')if index < 0: raise IndexErrorelse: return index except IndexError:print('I’m in except')return 'except' finally:print('I’m in finally')return 'finally'print(dig_dig2(12))

原以为会输出的结果:

I’m in try12

运行结果

I’m in tryI’m in finallyfinallyProcess finished with exit code 0 如果异常处理中存在finally, finally总会被执行。 如果在try块语句中存在return的同时又存在finally块语句,那么将会在执行try块语句中return语句之前去执行finally语句块,然后再回来执行try块语句中return语句。 但是例子中在finally块语句中存在return语句,整个函数已结束,所以try块语句中return语句将永远得不到执行。总结

一般情况下,如果异常处理中存在finally, finally总会被执行。但是,存在以下情况就需要注意:

在执行finally之前,try中的产生的异常将会被临时保存起来,当finally的代码执行完成后,再抛出异常; 但当finally中存在raise或return或break时, try中的异常将会被抛弃。 如果在try块语句中存在return的同时又存在finally块语句,那么将会在执行try块语句中return语句之前去执行finally语句块,然后再回来执行try块语句中return语句。但是在finally块语句中存在return语句,整个函数已结束,所以try块语句中return语句将永远得不到执行。

以上就是Python异常处理中容易犯得错误总结的详细内容,更多关于python 异常处理的资料请关注好吧啦网其它相关文章!

标签: Python 编程
相关文章: