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.