PHP では、trycatch ブロック内で定義された変数をブロック外で使用できるのはなぜですか?
function f() <br />{<br /> try {<br /> $a = new obj;<br /> } catch (Exception $e) {<br /> echo $e->getMessage();<br /> }<br /> $a->func();<br />}<br />
ログイン後にコピー
上記のように、$a 変数は引き続き func() を呼び出すことができます。つまり、$a は new によって生成されたオブジェクトであるということです。 . $a が func 関数を呼び出した場合、$a オブジェクトのメモリは再利用されません。
この現象の理由について、PHP の専門家からアドバイスをいただけますか。
------解決策----------------------try ブロックでは、定義内容に例外がある場合、指定された操作を実行する必要があります。それ自体は関数ではありません。
例外がスローされた場合、try ステートメントのスクリプトは実行を停止し、すぐに catch ステートメントのスクリプトの実行に切り替わります。
したがって、上記のコードは、例外処理に関係なく、
<br />function f() <br />{<br /> $a = new obj;<br /> $a->func();<br />}<br />
ログイン後にコピー
と同等です------解決策のアイデア---------- ------------try catch 構造は、例外を処理するための単なるプログラム ブロックです
形式的に言えば、if else、while、for、およびforeach 構造体