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()` に適しています。