概要

トピックの締めとして、例外を 入力検証 (バリデーション) に応用する実用パターンを扱う。フォーム入力・API パラメータ・関数引数――どんな入り口でも、「想定外の値はその場で弾く」ことで、後段のロジックを「もう変な値は来ない」前提で書ける。

具体的な書き方は ガード節 (guard clause) と呼ばれるスタイル。関数の冒頭で if ($age < 0 || $age > 150) { throw new InvalidArgumentException(...); } のように、不正値を 早期 throw で振り落とす。残りの処理は正常値だけが流れてくる前提になるので、ネストが減り、本来のロジックが読みやすくなる。

PHP では値の不正には InvalidArgumentException を投げる慣習がある (標準ライブラリも同様)。大きなアプリでは Symfony Validator / Laravel Validator などへ発展する。この章は「年齢 0-150」という最小例で、ガード節と例外の組み合わせを身体に通す。

学習目標

ドリル

no 内容
01 年齢が 0-150 の範囲外なら例外を投げる

演習: ドリル 01 — 年齢を検証して例外で弾く

問題

標準入力から整数 $age を 1 行読み込みます。

validateAge(int $age) という関数を定義してください。

main 部分では try / catch を使ってください。

入力例 (tests/input.txt)

200

期待される出力 (tests/expected.txt)

NG: age must be 0-150: 200

ヒント

この章を AI に聞く

  1. 「ch08 — 入力検証で例外を活用する」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch08 — 入力検証で例外を活用する」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch08 — 入力検証で例外を活用する」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

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

ch08 — 入力検証で例外を活用する」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE