Czy dla każdego możliwego bloku try-Final w Pythonie jest zagwarantowane, że finallyblok będzie zawsze wykonywany?
Na przykład, powiedzmy, że wracam będąc w exceptbloku:
try:
1/0
except ZeroDivisionError:
return
finally:
print("Does this code run?")
A może przebijam ponownie Exception:
try:
1/0
except ZeroDivisionError:
raise
finally:
print("What about this code?")
Testy pokazują, że finallytak się dzieje w powyższych przykładach, ale wyobrażam sobie, że istnieją inne scenariusze, o których nie pomyślałem.
Czy istnieją scenariusze, w których finallyblok może nie zostać wykonany w Pythonie?
finallynie zadziała. Albo tak samo, jeśli komputer się wcześniej zawiesił: D
finallynie zadziała, jeśli przewód zasilający zostanie wyrwany ze ściany.
finallyniepowodzenie w wykonaniu lub „pokonaniu jego celu”, to nieskończona pętlasys.exitlub wymuszone przerwanie. W dokumentacji stwierdza, żefinallyzawsze jest tak wykonana, że pójdę z tym.