try finally return python_对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 执行顺序详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: 对python中的try、except、finally 执行顺序详解

本文地址: http://www.cppcns.com/jiaoben/python/252347.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值