python - 为什么 try-finally 有效,但 try-else-finally 无效?

标签 python syntax exception

我发现 Python 在尝试不使用 except 的情况下尝试 try 时向我抛出 SyntaxError:

try:
    spam()
else:
    eggs()
finally:
    semprini()

相反,我被迫写:

try:
    spam()
except:
    raise
else:
    eggs()
finally:
    semprini()

感觉有点傻,但我希望 eggs() semprini() 执行——如果我把else: - 在 finally: 之后的子句,它将在 after semprini() 之后执行。虽然有一个try without except proposal在过去,语义是不同的,因为那里的含义是 except: pass,即与我所追求的截然相反。有趣的是,try: 没有 except: else: is valid ,但如果我没有 except:,我就不能有 else:。尽管可能有不同的方式来表述相同的内容,但我想到的替代方案(可能)具有微妙的不同行为。

为什么 else: 的存在需要 except: 的存在?

最佳答案

你应该写

try:
    spam()
    eggs()
finally:
    semprini()

在没有任何except 子句的情况下,else 是无用的。

关于python - 为什么 try-finally 有效,但 try-else-finally 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45309525/

相关文章:

python - 无效的语法Python Inside打印2.7.11

r - 减去两列以在 R 中给出一个新列

swift - 错误 : Cannot subscript a value of type 'X' with . ..'

c++ - boost 正则表达式错误:未初始化的 boost::match_results

python - anaconda 找不到 pip3 并且不想使用 pip 或 pip2

python - 如何在Windows XP Win32上为python2.6安装pyzmq 2.1.10?

python - 如何在不同的conda环境下设置不同的keras后端

python - 如何在 python 中抓取 instagram 帐户信息

python - 如何减少Python3请求中连接超时的等待?

android - 获取 "java.lang.IllegalArgumentException: Unknown URL content in"Android