ch03 8章中 3章目

ch03 — Exception::getMessage()

スライドで見る

この章を AI と学ぶ

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

    ChatGPT Claude Gemini

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

    ChatGPT Claude Gemini

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

    ChatGPT Claude Gemini

概要

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

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

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

学習目標

  • catch (Exception $e)$e から例外の情報を取り出せる
  • $e->getMessage() で例外メッセージを文字列で取得できる
  • ログ・画面表示にメッセージを使える

ドリル

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

解説スライド 全 6 枚

右の ボタン キー(またはスワイプ)で次のスライドに進めます。 下の「縦表示」を開くと全スライドを一気に読めます。

  1. Exception::getMessage()

    Lesson 10 / Chapter 3

  2. catch で受けた $e は何者?

    <?php
    try {
        throw new Exception("ファイルが無い");
    } catch (Exception $e) {
        // $e は Exception オブジェクト
    }
    • $eException クラスのインスタンス
    • 中に「メッセージ」「行番号」「ファイル名」などの情報を持っている
    • メソッドを呼べば取り出せる
  3. getMessage() でメッセージを取り出す

    <?php
    try {
        throw new Exception("ファイルが無い");
    } catch (Exception $e) {
        echo $e->getMessage() . "\n";
    }

    実行結果:

    ファイルが無い
    • throw new Exception("...") で渡した文字列がそのまま返る
    • 文字列なので、そのまま echo できる
  4. ログ用に整形して出すパターン

    <?php
    try {
        throw new Exception("DB 接続失敗");
    } catch (Exception $e) {
        echo "[ERROR] " . $e->getMessage() . "\n";
    }

    実行結果:

    [ERROR] DB 接続失敗
    • プレフィクスを付けてログレベルを表現
    • 本番では error_log() などに書き出す
  5. 他にも情報を取れる (参考)

    メソッド 内容
    getMessage() メッセージ (このチャプターで扱う)
    getCode() エラーコード (整数)
    getFile() 例外が投げられたファイル
    getLine() 例外が投げられた行番号

    このチャプターでは getMessage() だけ使えればOK。

  6. このチャプターでできるようになること

    catch (Exception $e)$e がオブジェクトと分かる ✅ $e->getMessage() でメッセージを取れる ✅ ログ・画面表示にメッセージを使える

    → ドリルへ

1 / 6
📜 スライドを全部一気に読む(縦表示)

Lesson 10 / Chapter 3


catch で受けた $e は何者?

<?php
try {
    throw new Exception("ファイルが無い");
} catch (Exception $e) {
    // $e は Exception オブジェクト
}
  • $eException クラスのインスタンス
  • 中に「メッセージ」「行番号」「ファイル名」などの情報を持っている
  • メソッドを呼べば取り出せる

getMessage() でメッセージを取り出す

<?php
try {
    throw new Exception("ファイルが無い");
} catch (Exception $e) {
    echo $e->getMessage() . "\n";
}

実行結果:

ファイルが無い
  • throw new Exception("...") で渡した文字列がそのまま返る
  • 文字列なので、そのまま echo できる

ログ用に整形して出すパターン

<?php
try {
    throw new Exception("DB 接続失敗");
} catch (Exception $e) {
    echo "[ERROR] " . $e->getMessage() . "\n";
}

実行結果:

[ERROR] DB 接続失敗
  • プレフィクスを付けてログレベルを表現
  • 本番では error_log() などに書き出す

他にも情報を取れる (参考)

メソッド 内容
getMessage() メッセージ (このチャプターで扱う)
getCode() エラーコード (整数)
getFile() 例外が投げられたファイル
getLine() 例外が投げられた行番号

このチャプターでは getMessage() だけ使えればOK。


このチャプターでできるようになること

catch (Exception $e)$e がオブジェクトと分かる ✅ $e->getMessage() でメッセージを取れる ✅ ログ・画面表示にメッセージを使える

→ ドリルへ

この章で取り組む 演習問題の流れ (1ステップ)
  1. 01 ドリル 01 — getMessage() でメッセージを取り出す README.md starter.php answer.php

演習問題の詳細

この章の演習問題の内容を読めます。実際に手元で解くには教材リポジトリを clone してください。

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

問題

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

期待される出力:

[ERROR] ファイルが無い

ヒント

  • throw new Exception("ファイルが無い");
  • catch (Exception $e) { echo "[ERROR] " . $e->getMessage() . "\n"; }

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

演習問題(1問)

  1. ドリル 01 — getMessage() でメッセージを取り出す

    README.md starter.php answer.php

サイト内で問題文・雛形・解答例を確認できます。実際に手元で解くには教材リポジトリを clone してください。

完了にすると進捗に反映されます