'try...catch' ブロック
CoddyのPHPジャーニー「論理とフロー」セクションの一部 — レッスン 53/68。
PHPコードがクラッシュの原因となるような問題に遭遇したとき、これらの状況を適切に処理する方法が必要です。try...catch ブロックは、例外(コード内の重大な問題を表す特別なエラーオブジェクト)を処理するための構造化されたアプローチを提供します。
tryブロックには、失敗したり例外をスローしたりする可能性のあるコードが含まれます。このブロック内で例外が発生した場合、PHPは直ちにtryブロック内の残りのコードの実行を停止し、対応するcatchブロックにジャンプします。catchブロックは例外を処理し、スクリプトがクラッシュする代わりに実行を継続できるようにします。
<?php
try {
// 例外をスローする可能性のあるコード
$result = riskyFunction();
echo "Success!";
} catch (Exception $e) {
// 例外を処理する
echo "An error occurred: " . $e->getMessage();
}
?>catchブロックは、何が問題だったかに関する情報を含むExceptionオブジェクトを受け取ります。getMessage()メソッドを使用して、エラーメッセージにアクセスできます。このアプローチにより、問題が発生したときにスクリプト全体が停止するのを防ぎ、エラーの処理方法やユーザーに表示される内容を制御できるようになります。
チャレンジ
簡単年齢を表す数値という1つの入力を受け取ります。入力は負の数になる可能性があり、それは年齢としては無効です。
入力を読み込み、整数に変換して、try...catch ブロックを作成してください。try ブロックの中で、年齢が負であるかどうかを確認します。もし負であれば、"Age cannot be negative" というメッセージを持つ新しい Exception をスローしてください。年齢が有効(0または正)であれば、"Valid age: " に続けてその年齢の値を出力してください。
catch ブロックでは、getMessage() メソッドを使用して、"Error: " に続けて例外メッセージを出力することで例外を処理してください。
入力形式: 整数を含む1行(例: 25 または -5)
期待される出力:
- 年齢が有効な場合:
Valid age:に続けて年齢の値 - 年齢が負の場合:
Error: Age cannot be negative
自分で試してみよう
<?php
// 入力を読み込む
$age = intval(fgets(STDIN));
// TODO: 以下にコードを記述してください
// 年齢を検証するための try...catch ブロックを作成します
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。