Para cualquier posible bloque try-finally en Python, ¿se garantiza que el finally
bloque siempre se ejecutará?
Por ejemplo, digamos que regreso mientras estoy en un except
bloque:
try:
1/0
except ZeroDivisionError:
return
finally:
print("Does this code run?")
O tal vez vuelvo a subir un Exception
:
try:
1/0
except ZeroDivisionError:
raise
finally:
print("What about this code?")
Las pruebas muestran que finally
se ejecuta para los ejemplos anteriores, pero imagino que hay otros escenarios en los que no he pensado.
¿Hay algún escenario en el que un finally
bloque no pueda ejecutarse en Python?
finally
no se ejecutará. O lo mismo si la computadora falla antes: D
finally
no se ejecutará si el cable de alimentación se arranca de la pared.
finally
no se ejecuta o "vence su propósito" es durante un bucle infinitosys.exit
o una interrupción forzada. La documentación indica quefinally
siempre se ejecuta, así que iría con eso.