宜しくお願い致します。
下記のサンプルをご覧頂きたいのですが、
<?php
function division($a,$b){
try{
if($b === 0){
throw new Exception("cannot divide by 0");
}
echo $a / $b;
} catch (Exception $e){
echo $e->getMessage();
}
}
division(7, 2);
division(5, 0);
?>
下記の部分について教えてください。
if($b === 0){
throw new Exception("cannot divide by 0");
}
上記はcatch部分にエラーを投げているのはわかるのですが、なぜ、throwが必要なのでしょうか?
エラーが起こりそうな個所をtry~catchで囲むだけで例外処理が行えると思っておりました。
throwは例外を発生させて投げるとありましたがイメージがしにくいです・・・。
もう、一点教えて頂きたいのですが、下記のプログラムの例外処理についてどう思われますか?
無駄な処理等があればご教示頂きたいです。
<?php
$lock = 'test.csv';
foreach($_POST as $value){
$data[] = $value;
}
mb_convert_variables('SJIS','UTF-8',$data);
try {
$file = new SplFileObject($lock, 'ab');
if ($file->flock(LOCK_EX)) {
$file->fputcsv($data);
$file->flock(LOCK_UN);
} else {
echo "ロックを正常に行えませんでした";
}
} catch (Exception $e) {
echo "CSVファイルを閉じてください。";
exit;
}
header("Location: ./thanks.html");
?>
最後まで、ご覧下さりましてどうもありがとうございました。
No.1ベストアンサー
- 回答日時:
tryの中でthrowしているので分かりづらいかもしれませんが
関数とtry~catch構文を分ければイメージできませんか?
<?php
function division($a,$b){
if($b === 0){
throw new Exception("cannot divide by 0");
}
echo $a / $b;
}
try{
division(7, 2);
division(5, 0);
} catch (Exception $e){
echo $e->getMessage();
}
?>
SplFileObjectのくだりはせっかくなんだし
元の質問にあるようなthrow構文で書く方がよいのでは?
yambejp様
早々にご回答を頂きましてどうもありがとうございます。
throw文をtry~catchの外に書けるのは知りませんでした。
勉強になりました!感謝致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
switch()文で値の大小比較
-
syntax error, unexpected 'ech...
-
小数点以下0の非表示
-
$_SERVER["REQUEST_METHOD"]に...
-
Parse error というエラーの対...
-
bashの関数の引数にスペースが...
-
ダブルクウォートやヒアドキュ...
-
PHPを使い、表形式でカレンダー...
-
$_POST,$_GETの値が空...
-
php・10回目ごとに○○
-
Windowsのsetコマンドでの小数...
-
バッチファイル 作成 echo で...
-
動的サイトを作ってみたのです...
-
PHPで日付の入力内容をチェック...
-
DTOとEntityの差は何ですか。
-
「取得先」という表現について
-
wordの差し込み印刷で文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
switch()文で値の大小比較
-
findstrのerrorlevel
-
syntax error, unexpected 'ech...
-
phpでcookieがうまく保存されない
-
バッチファイルで、全てのウィ...
-
オブジェクトの中身の判定(PHP)
-
ゼロとNULLを区別して number_f...
-
Windowsのsetコマンドでの小数...
-
小数点以下0の非表示
-
bashの関数の引数にスペースが...
-
DBのハッシュ化したパスワード...
-
pdftkを使った処理をバッチファ...
-
コマンドプロンプト フォルダ内...
-
php mysql SELECT文でテーブル...
-
XMLのタグの有無をPHPで判定し...
-
hiddenを使っているのに、表が...
-
PHP-SQLiteに於いて、複数列の...
おすすめ情報
>SplFileObjectのくだりはせっかくなんだし
元の質問にあるようなthrow構文で書く方がよいのでは?
上記についてですが、どのように書けば良いでしょうか?