首页 > 解决方案 > 如果“try”子句抛出 SyntaxError,Python“finally”子句不会执行

问题描述

考虑以下代码:

try:
    a = []
    a[4] = 4
except ZeroDivisionError:
    print('h')
finally:
    print('y')

输出显示 finally 子句已执行:

y
Traceback (most recent call last):
  File "work/finally.py", line 3, in <module>
    a[4] = 4
IndexError: list assignment index out of range

但是,如果我将 try 子句更改为以下内容:

[] += [] - []

然后 finally 子句不会被执行:

  File "work/finally.py", line 2
    [] += [] - []
    ^
SyntaxError: illegal expression for augmented assignment

这种行为的原因是什么?我在哪里可以读到这个?我没有在文档中找到它。

标签: pythonexceptionfinallytry-finally

解决方案


推荐阅读