小编给大家分享一下python中try、except、finally执行顺序的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
创新互联建站-专业网站定制、快速模板网站建设、高性价比麟游网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式麟游网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖麟游地区。费用合理售后完善,十余年实体公司更值得信赖。如下所示:
def test1(): try: print('to do stuff') raise Exception('hehe') print('to return in try') return 'try' except Exception: print('process except') print('to return in except') return 'except' finally: print('to return in finally') return 'finally' test1Return = test1() print('test1Return : ' + test1Return)
输出:
to do stuff process except to return in except to return in finally test1Return : finally
在 try 中 raise一个异常,就立刻转入 except 中执行,在except 中遇到 return 时,就强制转到 finally 中执行, 在 finally 中遇到 return 时就返回
def test2(): try: print('to do stuff') print('to return in try') return 'try' except Exception: print('process except') print('to return in except') return 'except' finally: print('to return in finally') return 'finally' test2Return = test2() print('test1Return : ' + test2Return)
输出:
to do stuff to return in try to return in finally test2Return : finally
这里在 try 中没有抛出异常,因此不会转到 except 中,但是在try 中遇到return时,也会立即强制转到finally中执行,并在finally中返回
test1和test2得到的结论:
无论是在try还是在except中,遇到return时,只要设定了finally语句,就会中断当前的return语句,跳转到finally中执行,如果finally中遇到return语句,就直接返回,不再跳转回try/excpet中被中断的return语句
def test3(): i = 0 try: i += 1 print('i in try : %s'%i) raise Exception('hehe') except Exception: i += 1 print('i in except : %s'%i) return i finally: i += 1 print ('i in finally : %s'%i ) print('test3Return : %s'% test3())
输出:
i in try : 1 i in except : 2 i in finally : 3 test3Return : 2 def test4(): i = 0 try: i += 1 return i finally: i += 1 print ('i in finally : %s'%i ) print('test4Return : %s' % test4())
输出
i in finally : 2 test4Return : 1
test3和test4得到的结论:
在except和try中遇到return时,会锁定return的值,然后跳转到finally中,如果finally中没有return语句,则finally执行完毕之后仍返回原return点,将之前锁定的值返回(即finally中的动作不影响返回值),如果finally中有return语句,则执行finally中的return语句。
def test5(): for i in range(5): try: print('do stuff %s'%i) raise Exception(i) except Exception: print('exception %s'%i) continue finally: print('do finally %s'%i) test5()
输出
do stuff 0 exception 0 do finally 0 do stuff 1 exception 1 do finally 1 do stuff 2 exception 2 do finally 2 do stuff 3 exception 3 do finally 3 do stuff 4 exception 4 do finally 4
test5得到的结论:
在一个循环中,最终要跳出循环之前,会先转到finally执行,执行完毕之后才开始下一轮循环
以上是“python中try、except、finally执行顺序的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联成都网站设计公司行业资讯频道!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。