- ベストアンサー
phpのtry and catchについて
PHPについて質問ですが try and catchの命令についてPHP5から対応していたはずですが さくらインターネットで0除算の処理を作成し、試してみたのですが 500エラーとなってしまいます。 どなたか、ご存知の方はいらっしゃいませんでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
発生した例外を 捕捉するには、コードを try ブロックで囲みます。 注意: PHP の内部関数の多くは エラー報告 を使っており、例外を使っているのは新しい オブジェクト指向 の拡張モジュールのみです。 しかし、ErrorException を使えば簡単にエラーを例外に変換することができます。 <?php function exception_error_handler($errno, $errstr, $errfile, $errline ) { throw new ErrorException($errstr, 0, $errno, $errfile, $errline); } set_error_handler("exception_error_handler"); try { 0/0 } catch (ErrorException $e) { }
その他の回答 (3)
- JaneDue
- ベストアンサー率75% (263/350)
…ということは、500エラーですので、PHPのパス/拡張子/パーミション 、.htaccess は確認済みでしょうから、ログを確認または display_errors On にしてみては?
- okbakabaka
- ベストアンサー率30% (22/73)
try and catchの処理は#2さんのでいいとして >ではそのような処理を意図的にではく偶発的に行ってしまった場合 >どのように対処すべきかを明確に記述をすべきなのですが その処理をする前にまぁその0が入っているのは変数でしょうね。 その変数に対して必ずデータの検証をすべきです。 特にGETやPOSTで拾ってきたデータに関しては それと >さくらインターネットで0除算の処理を作成し、試してみたのですが >500エラーとなってしまいます。 これ。 ローカルにテスト環境すら作ってないのか? 質問者はとても迷惑な行為をやっていることを理解できているのか?
- JaneDue
- ベストアンサー率75% (263/350)
PHP も try ~ catchも関係なく、ゼロで割ってはいけません。 http://izumi-math.jp/F_Nakamura/div_0/div_0.pdf
お礼
ご回答 ありがとうございます 0で割るのは不可能をプログラミング上で行わせて 例外(try ~ catch)の処理の挙動の為に行っています ではそのような処理を意図的にではく偶発的に行ってしまった場合 どのように対処すべきかを明確に記述をすべきなのですが try ~ catchを使い偶発的な場合に備えていますが動作してないため の質問です 面白いのかもしれませんが今回は趣旨が違うとおもいますが・・
お礼
サーバー、PHPの設定も もうすこし、調べてみます ありがとうございました。