try中除了finally之外的执行顺序

问题描述 投票:0回答:1

我从来没有真正使用过

finally
,所以我想在更频繁地使用它之前测试一些东西。跑步时我注意到:

def f():
    try:
        1/0
        # 1/1
    except:
        print('except')      # 1
        raise                # 2
    finally:
        print('finally')     # 3

try:
    f()
except:
    print("haha")

我们得到这个执行顺序:

except
finally
haha

执行顺序的规则是什么?

据我所见,我得到了这条规则:

  • 运行
    except
    块中的所有内容,但不运行
    raise
    语句,如果存在任何此类语句
  • 运行
    finally
  • 返回到
    except
    块,并运行最后一个
    raise
    语句,ifpresent

正确吗?

python exception try-catch try-catch-finally
1个回答
0
投票

[Python.Docs]:定义清理操作强调是我的,但请阅读所有项目符号):

  • 执行 except 或 else 子句期间可能会发生异常。同样,在执行 finally 子句后重新引发异常
© www.soinside.com 2019 - 2024. All rights reserved.