finally 例外の有無にかかわらず実行される

最終更新:2026-09-22

finally 例外の有無にかかわらず実行される

finally ブロックは例外が発生したかどうかにかかわらず実行される;リソースの解放によく使われる。

カテゴリキーワード/文
種類キーワード/文
Python バージョンall

📝 構文

try:
    block
finally:
    cleanup

▶ 例

下のコードを編集し「実行」をクリックすると、出力パネルに結果が表示されます:

実行結果:

try
cleanup
さらに多くのケースは近日公開予定です。

❓ よくある質問

Q`finally` のコードは必ず実行されますか?
A基本的には必ず実行されます。`try` で `return` しても、例外を投げても、`finally` は退出前に実行されます。唯一の例外は、プロセスの強制終了や停電、インタプリタのクラッシュといった極端なケースです。
Q`finally` に return を書くとどうなりますか?
A`finally` 内の `return` が `try` ブロックの return 値を上書きします——これは古典的な罠です。`finally` では `return` や例外を投げることを避け、クリーンアップだけを行うべきです。
Q`finally` と `with` はどちらもリソースを掃除できます。どう選べばよいですか?
Aファイル、ロック、接続などのリソース管理では `with` を優先しましょう(簡潔で、公式にも推奨)。`finally` は必ずフォールバックで実行したい掃除ロジック、たとえば `finally: conn.close()` に適しています。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%