• ベストアンサー

phpのtry and catchについて

PHPについて質問ですが try and catchの命令についてPHP5から対応していたはずですが さくらインターネットで0除算の処理を作成し、試してみたのですが 500エラーとなってしまいます。 どなたか、ご存知の方はいらっしゃいませんでしょうか?

  • PHP
  • 回答数4
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

発生した例外を 捕捉するには、コードを 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)
回答No.4

…ということは、500エラーですので、PHPのパス/拡張子/パーミション 、.htaccess は確認済みでしょうから、ログを確認または display_errors On にしてみては?

hitosi2324
質問者

お礼

サーバー、PHPの設定も もうすこし、調べてみます ありがとうございました。

回答No.3

try and catchの処理は#2さんのでいいとして >ではそのような処理を意図的にではく偶発的に行ってしまった場合 >どのように対処すべきかを明確に記述をすべきなのですが その処理をする前にまぁその0が入っているのは変数でしょうね。 その変数に対して必ずデータの検証をすべきです。 特にGETやPOSTで拾ってきたデータに関しては それと >さくらインターネットで0除算の処理を作成し、試してみたのですが >500エラーとなってしまいます。 これ。 ローカルにテスト環境すら作ってないのか? 質問者はとても迷惑な行為をやっていることを理解できているのか?

  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.1

PHP も try ~ catchも関係なく、ゼロで割ってはいけません。 http://izumi-math.jp/F_Nakamura/div_0/div_0.pdf

hitosi2324
質問者

お礼

ご回答 ありがとうございます 0で割るのは不可能をプログラミング上で行わせて 例外(try ~ catch)の処理の挙動の為に行っています ではそのような処理を意図的にではく偶発的に行ってしまった場合 どのように対処すべきかを明確に記述をすべきなのですが try ~ catchを使い偶発的な場合に備えていますが動作してないため の質問です 面白いのかもしれませんが今回は趣旨が違うとおもいますが・・

関連するQ&A

  • try ~ catch構文が使えない

    ロリポップサーバを利用しています。 http://lolipop.jp/?mode=manual&state=hp&state2=cgi try ~ catchやthrowでエラーがでます。 仕方なくcatch文を外したり、throwを使わない構文に していますが、どうも不安です。 try ~ catchやthrowを使えないとあきらめるしか ないのでしょうか? PHPのバージョンが対応していないのでしょうか?

    • ベストアンサー
    • PHP
  • try catchについて

    try catchの動きで質問があります。 以下が簡略化したソースです。 -------ここから--------------------- ストリーム1; ストリーム2; try{ try{ //ストリーム1を使った処理 }catch(IOException e){ throw e; }finally{ //ストリーム1のクローズ } try{ //ストリーム2を使った処理 }finally{ //ストリーム2のクローズ } } catch(IOException e){ throw new hogeException(); } ------ここまで-------------------------- 内側でスローされた例外は、外側でcatchされるのですか? また、内側でcatchをしなかった場合、外側でcatchされるのですか? この2点を教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • カットアンドトライとは

    教えてください。 こんな言葉を耳にしました。 カットアンドトライの意味は何でしょうか。 辞書でもインターネットで調べてもわかりませんでした。 トライアルアンドエラーと同意語なのでしょうか。 誰かの造語でしょうか。

  • try catch finally は必要か???

    smtpでメールを同期送信しております もちろん通常とおり前後をtry catch finally で囲んでおります 送信に時間が掛るので、今回非同期送信に改めました それに伴いイベントハンドラーも追加しました するとエラーが発生してもcatchには来ずイベントハンドラーのエラー発生の判定部分に来ます 質問? イベントハンドラーを設置した場合、try catch finallyは取り外しても良いのでしょうか?

  • phpの例外処理がエラーをトラップしてくれない。

    以下のように例外処理を記述しした場合、 try{ //ここでエラー } catch (Exception $e){ $ErrorMsg="その他エラー:".$e->getMessage(); } tryの中で、0除算によるエラーが発生してもエラーをトラップして、例外 処理のcatchに飛びません。 どのように記述すればエラーをトラップできるのでしょか?

    • ベストアンサー
    • PHP
  • Javaのエラー処理(try catch)について

    Java初心者です。とても基本的な質問、というか変な質問で恐縮です。あるアプリケーション開発用のソフトウェアが使っていて、これ上に文字列編集の機能を実装しています。要はただの関数なのですが、このソフト上ではJavaで書く必要があるので以下のように記述しました。UI画面上からユーザが入力した文字列が"ZenkakuNumber"という名前の変数でこのコードに渡されて来ます。それから、文字列を編集した後で最後に文字列を返します。ただそれだけの簡単な関数なのですが、上司のレビュー時にエラー処理(try and catch)があった方がいいのではないかと指摘を受けました。もちろん、コードにエラー処理があった方がいいのはわかるのですが、このようなコードの場合、どのようなエラー処理を記述すればよいのでしょうか。インプットとして文字列を受け、文字列を返すだけなので、ArrayIndexOutOfBoundsExceptionエラーもありえなければ、IOExceptionもありえないと思います。どのようなtry and catchを書けばいいのか、何かアイデアがございましたら教えて下さい。質問がまわりくどくなったのはパッケージを使っているので、完全にJava単体の質問とも異なる可能性があると思ったからです。 MyFunc ---------------------------------------------------- StringBuffer HankakuNumber = new StringBuffer(); for(int i=0; i<ZenkakuNumber.length(); i++) { char c = ZenkakuNumber.charAt(i); if(c >= '0' && c <= '9') { HankakuNumber.append((char)(c - '0' + '0')); } else { HankakuNumber.append(c); } } return HankakuNumber.toString(); ---------------------------------------------------- ↑このコードにエラー処理を加えたい

    • ベストアンサー
    • Java
  • try~catch

    php初心者です try~catchをわかりやすく教えてください throw new Exceptionが出現したら、catchまでの処理をしないでとばすとゆうことですか? try~catchを抜けたら、他の処理は普通に実行されるのでしょうか? try~catchのカッコ{で囲む範囲は大きくしたほうがいいでしょうか?(大きく囲むと処理スピードおそくなりますか?) try { throw new Exception('エラーが発生しました');  print "hoge"; } catch (Exception $e) {  echo '例外発生', $e->getMessage(), "\n"; }  print "foo"; よろしくお願いします

    • ベストアンサー
    • PHP
  • c# の try の入れ子

    try の入れ子はどちらで処理されるのでしょうか? 例 public aaaa() { try(){ bbbb(); } catch(){ } finary(){ } } private bbbb() { try(){ xxxxx ← ここでエラーになる } catch(){ } finary(){ } } この場合、 catch()処理は aaaa() の catch() を行う?それとも bbbb() ? finary() ()処理は aaaa() の finary() を行う?それとも bbbb() ?

  • try...catchステートメントについて

    お世話になっています。 WindowsXP(SP3)、SQL2005(SP3)、VB6.0(SP6)で開発を行っております。 SQL2005で、トリガーを作成しています。実行時エラー検知のため、TRY...CATCHステートメントを利用して、エラーを検知するように作成していますが、エラーが検知できません(実行時エラー)。 TRY...CATCH構文では、エラーレベル10以下のエラーは補足できませんが、そのエラーを表示させる方法はあるのでしょうか?また、10以下のエラーレベルを任意に変えることはできるのでしょうか? 未熟者ですが、ご教授願います。

  • Transact-SQLのBULK INSERTでエラーをキャッチしたい

    ・環境 WindowsXP Pro SQL Server2005 はじめまして。 Transact-SQLのBULK INSERTで、エラー(ファイルが存在しない等)が発生した場合に、専用の処理を行いたいと思っています。 ※BULK INSERTでエラーが発生したら、リターンコード100を返す等の処理を行いたいと思ってます 私の方で試したのは、BULK INSERTをBEGIN TRYでネストしエラーキャッチを行おうと思いましたがキャッチできず困っております。 以下、質問させてください。  ・BULK INSERTのエラーはエラーキャッチできないのか?できる場合その方法は?  ・エラーキャッチできない場合、他の方法でBULK INSERTエラー時の処理を行う方法はあるのか? お手数ですが、よろしくお願いします。

専門家に質問してみよう