为什么我们需要“finally"?Python中的子句? [英] Why do we need the "finally" clause in Python?

查看:32
本文介绍了为什么我们需要“finally"?Python中的子句?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不确定为什么我们在 try...except...finally 语句中需要 finally.在我看来,这个代码块

I am not sure why we need finally in try...except...finally statements. In my opinion, this code block

try:
    run_code1()
except TypeError:
    run_code2()
other_code()

使用 finally 与这个相同:

try:
    run_code1()
except TypeError:
    run_code2()
finally:
    other_code()

我错过了什么吗?

推荐答案

早点回来会有所不同:

try:
    run_code1()
except TypeError:
    run_code2()
    return None   # The finally block is run before the method returns
finally:
    other_code()

比较一下:

try:
    run_code1()
except TypeError:
    run_code2()
    return None   

other_code()  # This doesn't get run if there's an exception.

其他可能导致差异的情况:

Other situations that can cause differences:

  • 如果在 except 块内抛出异常.
  • 如果在 run_code1() 中抛出异常但不是 TypeError.
  • 其他控制流语句,例如 continuebreak 语句.
  • If an exception is thrown inside the except block.
  • If an exception is thrown in run_code1() but it's not a TypeError.
  • Other control flow statements such as continue and break statements.

这篇关于为什么我们需要“finally"?Python中的子句?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆