検索

ホームページ  >  に質問  >  本文

PHP の Try/Catch ブロックが例外状況をキャッチできない

<p>このページからこの例 #1 を実行しようとしています: http://php.net/manual/en/ language.Exceptions.php</p> <pre class="brush:php;toolbar:false;"><?php 逆関数($x) { if (!$x) { throw new Exception('ゼロ除算。'); } 1/$x を返します。 } 試す { エコーインバース(5) . "n"; エコーインバース(0) . "n"; } catch (例外 $e) { echo '例外をキャッチしました: ', $e->getMessage(), "n"; } // 実行を継続します 「Hello Worldn」をエコーし​​ます。 ?></pre> <p>ただし、得られる出力は期待どおりではありません: </p> <pre class="brush:php;toolbar:false;">0.2 致命的なエラー: キャッチされない例外「例外」とメッセージ「ゼロ除算」。 inxxx: 7 スタック トレース: #0 xxx(14): inverse(0) #1 {main} が 7</pre> 行目の xxx にスローされました。 <p>私が使用する開発環境は <code>UniServer 3.5</code> および <code>PHP 5.2.3</code></p> です。
P粉226413256P粉226413256465日前505

全員に返信(1)返信します

  • P粉611456309

    P粉6114563092023-08-23 14:46:31

    まさにこの問題に遭遇しました。例外の名前をコピーしただけなのに、それがキャッチされないような気がします。私の愚かな間違いであることが判明しましたが、他の誰かが同じ状況に陥った場合に備えて、私の状況をここに投稿したいと思いました。

    私の例外は私の名前空間では A と呼ばれ、スクリプトは 1 つの名前空間で B と呼ばれます。問題は、(PHP で) \B\A\MyException と等しい A\MyException があることです (スクリプトが名前空間 # で B# と呼ばれているため) #!)。例外名の前にバックスラッシュ (またはその名前) を追加して次のように修正するだけでした: \A\MyException

    返事
    0
  • キャンセル返事