Per ogni possibile blocco di prova finale in Python, è garantito che il finally
blocco verrà sempre eseguito?
Ad esempio, diciamo che torno mentre sono in un except
blocco:
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 finally
viene eseguito per gli esempi precedenti, ma immagino che ci siano altri scenari a cui non ho pensato.
Esistono scenari in cui un finally
blocco non può essere eseguito in Python?
finally
non verrà eseguito. O lo stesso se il computer si blocca prima: D
finally
non funzionerà se il cavo di alimentazione viene strappato dal muro.
finally
non riuscire a eseguire o "sconfiggere il suo scopo" è durante un ciclo infinitosys.exit
o un'interruzione forzata. La documentazione afferma chefinally
viene sempre eseguito, quindi lo seguirò.