演習課題「呼び出し元へ例外を伝えよう」
右のコードは、test_exeption関数でDateTimeオブジェクトを生成し呼び出し元へreturnしていますが、不正な日付を指定してるため例外が発生してしまいます。
発生した例外は呼び出し元にthrowしていますが、呼び出し元のほうでは例外処理が定義されていないためプログラムが強制終了してしまいます。
このコードを修正して、呼び出し元で例外を補足し、次のメッセージを表示するようにしてみましょう。
プログラムを実行して、想定どおり出力されれば演習課題クリアです!
期待する出力値
start
不正な日付です
end
#07:例外処理を呼び出し元に任せよう
ここでは、例外が発生したことを関数の呼び出し元に知らせ、その対応を任せる方法について学習します。
<?php
function test_exception($date) {
echo "2\n";
try {
echo "3\n";
return new DateTime($date);
echo "4\n";
} catch (Exception $e) {
echo "5\n";
throw $e;
}
echo "6\n";
}
echo "1\n";
try {
$datetime = test_exception("199x-01-01");
echo "7\n";
} catch (Exception $e) {
echo "8\n";
}
echo "9\n";
?>
PHP: 例外 - Manual
http://jp2.php.net/manual/ja/spl.exceptions.php
PHP: DateTime::__construct - Manual
http://php.net/manual/ja/datetime.construct.php
PHP: Exception - Manual
http://jp2.php.net/manual/ja/class.exception.php
PHP: 例外(exceptions) - Manual
http://php.net/manual/ja/language.exceptions.php