最后运行清理代码

有时,无论发生什么异常,你都可能希望发生某些事情,例如,如果你需要清理一些资源。

无论是否引发任何例外,都会发生 try 子句的 finally 块。

resource = allocate_some_expensive_resource()
try:
    do_stuff(resource)
except SomeException as e:
    log_error(e)
    raise  # re-raise the error
finally:
    free_expensive_resource(resource)

使用上下文管理器(使用 with 语句 ) 通常可以更好地处理此模式。