例外ハンドラで例外を発生させます。
try:
# do something that *might* raise an exception
except Exception:
raise
finally:
# something I *always* want to run
finallyスイートは、例外を再発生させたかどうかに関係なく、常に実行されます。
ドキュメントから:
が存在する場合finallyは、「クリーンアップ」ハンドラーを指定します。tryanyexceptおよび句を含む句が実行されますelse。いずれかの句で例外が発生し、処理されない場合、例外は一時的に保存されます。finally句が実行されます。保存された例外がある場合は、finally句の最後で再発生します。
finallyスイートがbreakorreturnステートメントを使用する場合、保存された例外は破棄されることに注意してください。
句がreturnまたはbreakステートメントを実行する場合finally、保存された例外は破棄されます。
def f():
try:
1/0
finally:
return 42
>>> f()
42
ただし、を発行した場合break、continueまたはスイートreturnでtry、finallyスイートは引き続き実行されます。
...ステートメントのスイートで、returnまたはbreakステートメントcontinueが実行されると、その句も「途中で」実行されます。</ p>
trytryfinallyfinally
Python 2.5より前では、同じステートメントでexceptとfinallyスイートを組み合わせることさえできなかったことに注意してください。PEP 341:統一された試行/例外/最終をtry参照してください。代わりに、ステートメントをネストすることが期待されていました。try
try:
try:
# some code that could raise an exception
except SomeException:
# exception handler
finally:
# cleanup code, always executed