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
、上記の例で実行されることを示していますが、私が考えていない他のシナリオがあると思います。
finally
Pythonでブロックの実行が失敗する可能性のあるシナリオはありますか?
finally
と、実行されないことは確かです。あるいは、同じコンピュータが前にクラッシュした場合:D
finally
電源コードを壁から引き剥がすと実行されません。
finally
実行に失敗したり「その目的を達成できなかった」と私が想像できる唯一のケースは、無限ループsys.exit
または強制割り込み中です。ドキュメントの状態finally
は常に実行されたが、私はそれでいいと思います。