Heim  >  Artikel  >  Backend-Entwicklung  >  php中为什么在trycatch块中定义的变量在块外也可以使用?解决思路

php中为什么在trycatch块中定义的变量在块外也可以使用?解决思路

WBOY
WBOYOriginal
2016-06-13 12:18:22933Durchsuche

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(),也就是说,在try{}块之外仍可以访问,我的想法是因为$a是因为new产生的对象,在$a调用func函数时$a对象内存没有被回收。
请问PHP高手,这种现象的原因,望赐教。
------解决思路----------------------
try块中的,只是定义里面的内容如果有异常需要做指定的操作。本身并不是一个function。
如果抛出了一个异常,try语句中的脚本将会停止执行,然后马上转向执行catch语句中的脚本。

所以,以上代码,抛开异常处理这块,相当于
<br />function f() <br />{<br />    $a = new obj;<br />    $a->func();<br />}<br />

------解决思路----------------------
try  catch 结构只是个处理异常的程序块
从形式上讲与 if else、while、for、foreach结构没有区别

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn