温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python中try、except、finally执行顺序的示例分析

发布时间:2021-08-26 10:33:19 来源:亿速云 阅读:142 作者:小新 栏目:开发技术

小编给大家分享一下python中try、except、finally执行顺序的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

如下所示:

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执行顺序的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI