目录
❤ finally的作用
❤ try、except、finally的执行顺序是什么
❤ 案列
finally 中不带return
finally中有return
❤ finally的作用
finally内的代码不管有无异常发生,都会执行。具体来说:
- 无论是否发生了异常,一定会执行 finally 的代码块
- 在函数中,即便在 try 或 except 中进行了 return 也依旧会执行 finally 代码块
- try 语法 至少要伴随 except 或 finally 中的一个
❤ try、except、finally的执行顺序是什么
简单的说,
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
def tef_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
def tef_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'