概要
例外を 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() を出力する |
📝 演習: ドリル 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"; }