前提・実現したいこと
現在PHPで問題を解いています。
十二支を文字列で返す関数を作るところまでは出来ました。
これを無効な数字や文字列の場合には例外処理を出したいです。
ご教授お願い致します。
該当のソースコード
PHP
1//例外処理出したい 2<?php 3 4function eto($seireki){ 5 $list12 = array("申","酉","戌","亥","子","丑","寅","卯","辰","巳","午","未"); 6 7 $num12 = $seireki - floor(($seireki /12)) * 12; 8 9 $zyunishi = $list12[$num12]; 10 11 return $zyunishi; 12} 13 14print_r(eto(1993)); 15?> 16 17//実行結果 "酉"
試したこと
PHP
1<?php 2function eto($seireki) 3{ 4 try { 5 $list12 = array("申", "酉", "戌", "亥", "子", "丑", "寅", "卯", "辰", "巳", "午", "未"); 6 7 $num12 = $seireki - floor(($seireki / 12)) * 12; 8 9 $zyunishi = $list12[$num12]; 10 if(is_string($zyunishi)){ 11 12 throw new Exception('無効な数字'); 13 } 14 return $zyunishi; 15 16 print_r(eto(1993)); 17 18 } catch (Exception $e) { 19 20 echo "例外処理が発生しました"; 21 echo "\n"; 22 echo $e->getMessage(); 23 24 } 25} 26?>
補足情報(FW/ツールのバージョンなど)
現状の問題は何ですか?
if(is_int($zyunishi)){
だと数値の時にthrowしてるように見えますが、
これは要件通りの実装ですか?
現状の問題は、何も表示されないことです。
is_stringにし整数の時にthrowしたりしてみましたがうまくじっこうできないです。
要件は、これを無効な数字や文字列の場合には例外処理を出したいです。
>現状の問題は、何も表示されないことです。
「試したこと」のコードだとeti()は誰からも呼ばれてませんし、
returnのあとに書いてあるprint_rは実行されることがないですし、関数名etoになってます。
すいません。もう少し詳しくお願い致します。
回答にうつしました。