Bedenken Sie:Break-Anweisung schließlich in Block Schwalben Ausnahme
def raiseMe(text="Test error"):
raise Exception(text)
def break_in_finally_test():
for i in range(5):
if i==2:
try:
raiseMe()
except:
raise
else:
print "succeeded!"
finally:
print "testing this!"
break
if __name__=='__main__':
break_in_finally_test()
Ich erwartete Exception("Test error")
zu sehen angehoben werden, sondern nur „Testen dieses“ gedruckt wird. Die Absicht war natürlich, raiseMe()
nur einmal anzurufen, egal ob wir Erfolg haben oder nicht - aber wenn es eine Ausnahme macht, hätte ich das sehen wollen!
Warum schluckt Pause die Ausnahme, die ich explizit erhöhe?
Ich bin mir nicht sicher, warum genau das passiert (und finde es ein wenig überraschend), aber du könntest stattdessen in "else" einbrechen, weil es im Ausnahmefall sowieso aus der Schleife austritt. – bereal
Ich kann verstehen, wie "Rückkehr" in endlich funktioniert, aber mit "Pause" ist es einfach komisch. Ihr Beispiel deckt dies nicht ab, aber die Methode wird sogar nach der Schleife weiter ausgeführt! –