我發現Python的我扔一個SyntaxError的努力try
無except
:爲什麼try-finally有效,但不能try-else-finally?
try:
spam()
else:
eggs()
finally:
semprini()
相反,我被迫寫:
try:
spam()
except:
raise
else:
eggs()
finally:
semprini()
這感覺略帶傻氣,但我想eggs()
被執行之前semprini()
- 如果我把else:
條款的內容 - finally:
- 條款之後它將在之後執行 semprini()
。儘管過去有一個try
without except
proposal,但語義不同,因爲它的含義是except: pass
,即與我所處的極端相反。有趣的是,try:
沒有except:
或else:
is valid,但我不能有else:
如果我也不except:
。雖然可能有不同的方式來制定相同的方案,但我認爲(可能)的備選方案具有細微差別的行爲。
爲什麼else:
的存在要求存在except:
?
'try:'without'except:'* must * have a'finally:' – TemporalWolf
@TemporalWolf我可以從語法中看到這一點,但我不知道爲什麼。 – gerrit
我假設是因爲[顯式比隱含更好](https://www.python.org/dev/peps/pep-0020/):如果你告訴Python你認爲你必須指定某些東西(即使這些東西沒有)這可能會引發異常。 – TemporalWolf