Per ogni possibile blocco di prova finale in Python, è garantito che il finallyblocco verrà sempre eseguito?
Ad esempio, diciamo che torno mentre sono in un exceptblocco:
try:
1/0
except ZeroDivisionError:
return
finally:
print("Does this code run?")
O forse rilancio di nuovo un Exception:
try:
1/0
except ZeroDivisionError:
raise
finally:
print("What about this code?")
I test mostrano che finallyviene eseguito per gli esempi precedenti, ma immagino che ci siano altri scenari a cui non ho pensato.
Esistono scenari in cui un finallyblocco non può essere eseguito in Python?
finallynon verrà eseguito. O lo stesso se il computer si blocca prima: D
finallynon funzionerà se il cavo di alimentazione viene strappato dal muro.
finallynon riuscire a eseguire o "sconfiggere il suo scopo" è durante un ciclo infinitosys.exito un'interruzione forzata. La documentazione afferma chefinallyviene sempre eseguito, quindi lo seguirò.