概要

ファイルを開いた・DB に繋いだ・ロックを取った――こういった 「掴んだものは離さないといけない」処理 は、例外が起きても起きなくても 必ず後始末 したい。try の最後で close、catch でも close、と書くと同じコードを 2 か所に書くことになり、漏れの温床になる。

finally ブロックは、try が正常完了しても、catch が走っても、catch すら無くて呼び出し元に例外が飛んでいく途中でも、必ず最後に 1 回実行される 特別なブロック。リソース解放を 1 か所に集約できるので、ファイル close / DB 切断 / ロック解放 / 一時ファイル削除といった 後始末コードの定位置 になる。

仕組み上のポイントは、try / catch の中に return があっても finally が return より先に実行される こと。これに引きずられて finally 内で別の return を書いてしまうと、try 側の返り値を上書きしてしまうので注意。基本姿勢は「finally では値を返さない・例外を投げない、後始末だけする」と覚えておくと事故が減る。

学習目標

ドリル

no 内容
01 try でも catch でも finally が必ず実行されることを示す

演習: ドリル 01 — finally は必ず実行される

問題

以下の順番に出力する PHP を書いてください。

  1. try ブロックの中で "try" を出力し、その後 throw new Exception() を実行する
  2. catch (Exception $e) の中で "catch" を出力する
  3. finally ブロックの中で "finally" を出力する

期待される出力:

try
catch
finally

ヒント

この章を AI に聞く

  1. 「ch05 — finally 節」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch05 — finally 節」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch05 — finally 節」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch05 — finally 節」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE