例外処理 / ch08 — 入力検証で例外を活用する / 演習 01
📝 ドリル 01 — 年齢を検証して例外で弾く
問題
標準入力から整数 $age を 1 行読み込みます。
validateAge(int $age) という関数を定義してください。
$age < 0または$age > 150の場合、throw new InvalidArgumentException("age must be 0-150: $age")- それ以外は何もしない
main 部分では try / catch を使ってください。
tryでvalidateAge($age);を呼び、続けて"OK: $age"を出力catch (InvalidArgumentException $e)で"NG: " . $e->getMessage()を出力
入力例 (tests/input.txt)
200
期待される出力 (tests/expected.txt)
NG: age must be 0-150: 200
採点
php scripts/grade.php v2/topics/10-exception/ch08-validation-pattern/drill/01-validate/
ヒント
function validateAge(int $age) { if ... throw new InvalidArgumentException(...); }try { validateAge($age); echo "OK: $age\n"; }catch (InvalidArgumentException $e) { echo "NG: " . $e->getMessage() . "\n"; }
テストケース
標準入力
200
期待される出力
NG: age must be 0-150: 200
📄 starter.php(雛形)
このコードから書き始めてください。
<?php
// TODO: 関数 validateAge(int $age) を定義する
// - age が 0 未満または 150 超なら
// throw new InvalidArgumentException("age must be 0-150: $age")
// - それ以外は何もしない
// TODO: 標準入力から $age を読み込む
// $age = (int) trim(fgets(STDIN));
// TODO: try / catch を書く
// try { validateAge($age); echo "OK: $age\n"; }
// catch (InvalidArgumentException $e) { echo "NG: " . $e->getMessage() . "\n"; }
✅ 解答例を見る(自分で解いてから)
<?php
function validateAge(int $age) {
if ($age < 0 || $age > 150) {
throw new InvalidArgumentException("age must be 0-150: $age");
}
}
$age = (int) trim(fgets(STDIN));
try {
validateAge($age);
echo "OK: $age\n";
} catch (InvalidArgumentException $e) {
echo "NG: " . $e->getMessage() . "\n";
}