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 オブジェクト
}$eはExceptionクラスのインスタンス- 中に「メッセージ」「行番号」「ファイル名」などの情報を持っている
- メソッドを呼べば取り出せる
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"; }