概要

例外を catch で受け止めたあと、「何が起きたか」を知らないとログにも画面にも出せない。catch (Exception $e)$e には、投げられた例外オブジェクトそのものが入っていて、ここからメッセージ・発生ファイル・行番号・スタックトレースを取り出せる。

最もよく使うのが $e->getMessage()。これは throw new Exception("...") で渡した文字列をそのまま返すメソッドで、ログ出力やユーザー向けメッセージ生成に使う。あわせて $e->getFile() で発生ファイル、$e->getLine() で行番号、$e->getTrace() / $e->getTraceAsString() で呼び出し履歴も取れる。デバッグでは行番号付きで吐く、本番ログでは詳細を残しつつユーザー画面には汎用メッセージだけ出す、という使い分けが定石。

注意したいのは、getMessage() の中身は throw した側が決めた文字列 だということ。投げる側が良いメッセージを書かないと、catch 側で頑張ってもユーザーには伝わらない。「何が・どうダメか」が後から読んで分かるメッセージを書く習慣が、結局例外活用の質を決める。

学習目標

ドリル

no 内容
01 catch で受けた例外の getMessage() を出力する

演習: ドリル 01 — getMessage() でメッセージを取り出す

問題

try の中で throw new Exception("ファイルが無い") を実行し、 catch (Exception $e) で受け止め、 "[ERROR] " . $e->getMessage() を 1 行出力してください。

期待される出力:

[ERROR] ファイルが無い

ヒント

この章を AI に聞く

  1. 「ch03 — Exception::getMessage()」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

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

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch03 — Exception::getMessage()」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

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

ch03 — Exception::getMessage()」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE