Para cualquier posible bloque try-finally en Python, ¿se garantiza que el finallybloque siempre se ejecutará?
Por ejemplo, digamos que regreso mientras estoy en un exceptbloque:
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 finallyse 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 finallybloque no pueda ejecutarse en Python?
finallyno se ejecutará. O lo mismo si la computadora falla antes: D
finallyno se ejecutará si el cable de alimentación se arranca de la pared.
finallyno se ejecuta o "vence su propósito" es durante un bucle infinitosys.exito una interrupción forzada. La documentación indica quefinallysiempre se ejecuta, así que iría con eso.