- 无异常,finally代码块中包含return语句
def test_return01():
try:
print('into try code block')
return 'try return value'
except:
print('into except code block')
return 'except return value'
finally:
print('into finally code block')
return 'finally return value'
输出结果:
2. 无异常,finally代码块中不包含return语句
def test_return02():
try:
print('into try code block')
return 'try return value'
except:
print('into except code block')
return 'except return value'
finally:
print('into finally code block')
输出结果:
3.有异常,finally代码块中不包含return语句
def test_return03():
try:
print('into try code block')
raise Exception('异常语句')
return 'try return value'
except:
print('into except code block')
return 'except return value'
finally:
print('into finally code block')
输出结果:
4.有异常,finally代码块中包含return语句
def test_return04():
try:
print('into try code block')
raise Exception('异常语句')
return 'try return value'
except:
print('into except code block')
return 'except return value'
finally:
print('into finally code block')
return 'finally return value'
输出结果:
总结:若finally代码块中包含return语句,不管是否有异常,都返回finally代码块中的返回值;若finally代码块中无return语句,若无异常则返回try代码块中的return值,有异常则返回except代码块的return值,返回之前会先执行finally代码块中的语句。