python try catch finally执行顺序_python 同一层的try, except,finally ,执行顺序是什么...

用逻辑流程图来表示这三者的执行关系吧:

5f6e479978fbc5b0b734a42fdce36e94.png

呃..画完我就后悔了,这种表示方法根本不简洁直观.

简单的说,

try  + except 的组合,大家都很清楚了:

try 中无异常,不执行except

try中遇到异常,就停止当前语句, 去执行except中的语句

finally 的作用是,

try 和 except 执行中:

1. 执行完最后一个语句后(如最后一条语句不是return)

2. return Value 前

都会触发finally的执行.

而在finally中的语句执行后,同样有两种情况:

1.如果finally中有return ,那么代码就在finally中返回。

2.如果finally中没有return ,那么代码会返回到触发finally的语句处,继续执行。

(即是说,如果是try/except中的 return Value 触发了finally ,且finally中没有return,那么执行完finally后,会返回去执行触发了finally的那个 return Value)

例子: finally 中不带return

deftef_raise():try:print("I am in 'try'")raise()return 'try'

except:print("I am in 'except'")return 'except'

finally:print("I am in 'finally ,and i don't return'")

输出:

I am in 'try'

I am in 'except'

I am in 'finally ,and i don't return'

'except'

可见,执行顺序是 try->except->finally->except中的 return

例子:finally中有return

deftef_raise():try:print("I am in 'try'")raise()return 'try'

except:print("I am in 'except'")return 'except'

finally:print("I am in 'finally")return 'finally'

输出:

I am in 'try'

I am in 'except'

I am in 'finally

'finally'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值