概要

実際のアプリでは、「入力値が変」「ファイルが読めない」「DB が落ちている」といった 種類の違うエラー が同じ try ブロックの中で起こり得る。すべてを一律 catch (Exception $e) で受けると、画面に出すべきメッセージも対応方針も同じになってしまい、適切なリカバリができない。

PHP では catch ブロックを 複数並べる ことで、例外の 型ごとに分岐 できる。上から順にマッチ判定され、最初に該当した catch だけが実行される。InvalidArgumentException (引数の値が不正) なら入力フォームに戻す、RuntimeException (実行時の外部要因) なら再試行を促す、という分け方ができる。継承関係があるので、子クラスをより上の catch に書く順番が重要。

PHP 8 からは catch (TypeA | TypeB $e) と書いて、複数型を 1 つの catch で同時に受けることもできる。同じ処理で良いエラーを束ねたいときに使う。この章では、標準ライブラリに用意された InvalidArgumentException / RuntimeException を投げ分けて、catch でどう拾い分けるかをドリルで体感する。

学習目標

ドリル

no 内容
01 InvalidArgumentExceptionRuntimeException を別 catch で受ける

演習: ドリル 01 — 2 種類の例外を別 catch で受ける

問題

try の中で次のように書いてください。

catch を 2 つ並べてください。

期待される出力:

実行時: 実行時の問題

ヒント

この章を AI に聞く

  1. 「ch04 — 複数の catch ブロック」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch04 — 複数の catch ブロック」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch04 — 複数の catch ブロック」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

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

ch04 — 複数の catch ブロック」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE