Ist für jeden möglichen Try-finally-Block in Python garantiert, dass der finallyBlock immer ausgeführt wird?
Nehmen wir zum Beispiel an, ich kehre in einem exceptBlock zurück:
try:
1/0
except ZeroDivisionError:
return
finally:
print("Does this code run?")
Oder vielleicht erhebe ich noch einmal Exception:
try:
1/0
except ZeroDivisionError:
raise
finally:
print("What about this code?")
Tests zeigen, dass finallydies für die obigen Beispiele ausgeführt wird, aber ich stelle mir vor, dass es andere Szenarien gibt, an die ich nicht gedacht habe.
Gibt es Szenarien, in denen ein finallyBlock in Python nicht ausgeführt werden kann?
finallyes nicht ausgeführt wird , wenn Sie den Task-Manager öffnen und den Prozess beenden. Oder das gleiche, wenn der Computer vorher abstürzt: D
finallywird nicht ausgeführt, wenn das Netzkabel von der Wand gerissen wird.
finallynicht auszuführen oder "seinen Zweck zu vereiteln", ist während einer Endlosschleifesys.exitoder eines erzwungenen Interrupts. Die Dokumentation besagt, dassfinallyimmer ausgeführt wird, also würde ich damit weitermachen.