採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

Exception::getMessage()

テクノロジ系 / exception (try / catch / throw / Exception / カスタム例外)

Exception::getMessage()

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() でメッセージを取れる

✅ ログ・画面表示にメッセージを使える

→ ドリルへ

考えてみよう

既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。

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

問題

try の中で throw new Exception("ファイルが無い") を実行し、

catch (Exception $e) で受け止め、

"[ERROR] " . $e->getMessage() を 1 行出力してください。

期待される出力:

[ERROR] ファイルが無い

採点

php scripts/grade.php topics/exception/ch03-exception-message/drill/01-getmessage/

ヒント

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