我发现 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/