Pythonで可能なtry-finallyブロックの場合、finallyブロックが常に実行されることが保証されていますか?
たとえば、exceptブロック内に戻ったとしましょう:
try:
1/0
except ZeroDivisionError:
return
finally:
print("Does this code run?")
または多分私は再調達しExceptionます:
try:
1/0
except ZeroDivisionError:
raise
finally:
print("What about this code?")
テストはfinally、上記の例で実行されることを示していますが、私が考えていない他のシナリオがあると思います。
finallyPythonでブロックの実行が失敗する可能性のあるシナリオはありますか?
finallyと、実行されないことは確かです。あるいは、同じコンピュータが前にクラッシュした場合:D
finally電源コードを壁から引き剥がすと実行されません。
finally実行に失敗したり「その目的を達成できなかった」と私が想像できる唯一のケースは、無限ループsys.exitまたは強制割り込み中です。ドキュメントの状態finallyは常に実行されたが、私はそれでいいと思います。