我发现Python向我抛出了一个SyntaxError,用于在没有try
的情况下尝试except
:
try:
spam()
else:
eggs()
finally:
semprini()
相反,我被迫写道:
try:
spam()
except:
raise
else:
eggs()
finally:
semprini()
感觉有点傻,但我希望{/ 1>}在 eggs()
之前执行 - 如果我把semprini()
- 子句的内容放在else:
之后{1}} - 子句将在 finally:
后执行。虽然过去有try
without except
proposal,但语义不同,因为其含义为semprini()
,即与我所追求的极性相反。有趣的是,except: pass
没有try:
或 except:
is valid,但如果我不这样做,我就不能else:
有else:
。尽管可能有不同的方法来制定相同的方法,但我所想到的(可能)替代方案却有微妙的不同行为。
为什么except:
的存在需要else:
?
答案 0 :(得分:3)
你应该写
try:
spam()
eggs()
finally:
semprini()
如果没有任何except
条款,else
就没用了。