PHP の Try/Catch ブロックが例外状況をキャッチできない
P粉226413256
P粉226413256 2023-08-22 15:19:37
0
1
484
<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粉226413256
P粉226413256

全員に返信(1)
P粉611456309

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

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!