例外処理について学習しています。
<Post.php>と<main.php>の2つのファイルがあります。一番下が表示結果となります。
<Post.php>のコンストラクタに条件と例外処理を記述しています。
php
1if (strlen($text) <= 3){ 2 3 throw new Exception('テキストは3文字以上にしてください'); 4 }
ですので、<main.php>内の
php
1$post1 = new Post('hi');
は条件に該当し例外処理がなされるので
php
1テキストは3文字以上にしてください
と表示されるのは理解できます。
ところが、<main.php>内の2つめのインスタンス
php
1$post2 = new Post('Good evening'); 2$post2->show();
に関しては条件の3文字以下ではないので、通常に
php
1Good evening
と表示させたいと思います。
もっといえば
$post1と$post2の両方の結果
php
1テキストは3文字以上にしてください 2Good evening
と出るようにしたいと思います。
初心者なりにif文の後にelse{}を使ってみたり、tryで囲む範囲を$post1のみにしたり
あるいは使い方のよくわからないfinallyを記述して$post2->show を加えてみたりしたのですが、全てエラーが
出ます。
以下のように条件にひっかかるものはエラーメッセージを出し
そうでないものはそのまま出力できるようにしたいと思います。
php
1テキストは3文字以上にしてください 2Good evening
現在の**<Post.php>,<main.php>**をどのように書き換えたり、書き加えると上記のような
結果が表示されるよう出来ますか?
現在、例外処理について学習していますので、それに沿った回答を教えていただけると助かります。
よろしくお願いいたします。
<Post.php>
php
1 2 3<?php 4 5class Post{ 6 7protected $text; 8 9function __construct($text){ 10 11 if (strlen($text) <= 3){ 12 13 throw new Exception('テキストは3文字以上にしてください'); 14 } 15 $this->text = $text; 16 } 17 18 function show(){ 19 20 printf('%s',$this->text); 21 } 22} 23?>
<main.php>
php
1<?php 2require('Post.php'); 3 4try{ 5 6$post1 = new Post('hi'); 7$post2 = new Post('Good evening'); 8 9$post1->show(); 10echo "<br>"; 11$post2->show(); 12 13} catch(Exception $e){ 14 15 echo $e->getMessage(); 16} 17 18?> 19
<表示結果>
php
1テキストは3文字以上にしてください
回答1件
あなたの回答
tips
プレビュー