演習課題「例外メッセージを指定しよう」
右のコードでは、DateTimeクラスのコンストラクタに日付を指定してオブジェクトを生成していますが、
存在しない日付を渡しているため例外が発生してプログラムが強制終了してしまいます。
このプログラムで、例外が発生した時に、標準エラー出力に下記のメッセージを表示して下さい。
プログラムを実行して、想定どおり出力されれば演習課題クリアです!
期待する出力値
start
指定された日付が不正です
end
期待する標準エラー出力値
Failed to parse time string (199x-01-01) at position 0 (1): Unexpected character
#03:いろいろな書式で例外に対応しよう
いろいろな形で例外に対応します。例外情報を表示するだけでなく、分かりやすいエラーメッセージを追加してみましょう。
<?php
echo "start\n";
try {
$date = new DateTime("199x-01-01");
echo $date->format('Y/m/d') . "\n";
} catch (Exception $e) {
echo "指定された日付が不正です\n";
// echo "発生した例外:", $e, "\n";
fputs(STDERR, $e->getMessage() . "\n");
} finally {
echo "end\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: fputs - Manual
http://php.net/manual/ja/function.fputs.php
PHP: I/O ストリーム - Manual
http://php.net/manual/ja/features.commandline.io-streams.php