def exe_try(): try: print('code running') raise KeyError except KeyError as ex: print('key error') return 2 else: print('other error') return 3 finally: print('finally') return 4 if __name__ == "__main__": ret = exe_try() print(ret)
程序的運行結果為:
code running
key error
finally
4
最后返回值是4,這是因為(1)try finally語句一定會執行finally中的語句,(2)return並不會真正的返回,而是將return語句的表達式執行后,再存到一個臨時棧當中,
當執行finally表達式中的語句時,會將4壓入到棧中,所以最后的返回值是4.