为什么尝试 - 终于有效,但不是尝试 - 其他 - 终于?

时间:2017-07-25 17:00:02

标签: python syntax exception-handling

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

的存在

1 个答案:

答案 0 :(得分:3)

你应该写

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

如果没有任何except条款,else就没用了。