时间:2021-05-22
如下所示:
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 stuffprocess exceptto return in exceptto return in finallytest1Return : 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 stuffto return in tryto return in finallytest2Return : 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 : 1i in except : 2i in finally : 3test3Return : 2def test4(): i = 0 try: i += 1 return i finally: i += 1 print ('i in finally : %s'%i )print('test4Return : %s' % test4())输出
i in finally : 2test4Return : 1test3和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 0exception 0do finally 0do stuff 1exception 1do finally 1do stuff 2exception 2do finally 2do stuff 3exception 3do finally 3do stuff 4exception 4do finally 4test5得到的结论:
在一个循环中,最终要跳出循环之前,会先转到finally执行,执行完毕之后才开始下一轮循环
以上这篇对python中的try、except、finally 执行顺序详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
python异常处理机制和java类似,采用try-except-finally的结构.try-except检测异常格式复制代码代码如下:try:try_sta
python的try语句有两种风格一是处理异常(try/except/else)二是无论是否发生异常都将执行最后的代码(try/finally)try/exce
在Python中处理异常使用的是try-except代码块,try-except代码块放入让python执行的操作,同时告诉python程序如果发生了异常该怎么
一、简介with是从Python2.5引入的一个新的语法,更准确的说,是一种上下文的管理协议,用于简化try…except…finally的处理流程。with通
Python异常处理的实例详解与许多面向对象语言一样,Python具有异常处理,通过使用try...except块来实现。Note:Pythonvs.Java的