php Try Catch异常测试
页面try catch里使用c的 c1,c1里使用b的b1,b1里使用a的a1。
默认的是:a1里抛出异常,b1里捕获a1的异常,然后再把刚才的异常抛出,c1捕获,然后抛出,最后页面捕获并输出。
结果是:
X-Powered-By: PHP/5.1.1
Content-type: text/html
#0 D:\workspace\myzCollection\test.php(16): a->a1()
#1 D:\workspace\myzCollection\test.php(28): b->b1()
#2 D:\workspace\myzCollection\test.php(37): c->c1()
#3 C:\Program Files\Zend\ZendStudio-5.2.0\bin\php5\dummy.php(1): include('D:\workspace\my...')
#4 {main}end
第二个测试:
把b1里面的throw $e去掉,就是不抛出。
结果是:
X-Powered-By: PHP/5.1.1
Content-type: text/html
end
第三个测试:
把b1里面的throw new Exception($e->getMessage());打开。
抛出一个新的异常,这样b1以上的调用都拿不到a1的异常了。
结果是:
X-Powered-By: PHP/5.1.1
Content-type: text/html
#0 D:\workspace\myzCollection\test.php(28): b->b1()
#1 D:\workspace\myzCollection\test.php(37): c->c1()
#2 C:\Program Files\Zend\ZendStudio-5.2.0\bin\php5\dummy.php(1): include('D:\workspace\my...')
#3 {main}end
第四个测试:
把b1里面的try catch throw都去掉。
结果:一切正常,就是说中间的步骤不需要抛出,最上层也能拿到最下层抛出的异常。
只是有一个问题,b中如果出先异常,就没有办法取到,如果需要也检测b的话,那么也要在b中加上try catch
X-Powered-By: PHP/5.1.1
Content-type: text/html
#0 D:\workspace\myzCollection\test.php(16): a->a1()
#1 D:\workspace\myzCollection\test.php(28): b->b1()
#2 D:\workspace\myzCollection\test.php(37): c->c1()
#3 C:\Program Files\Zend\ZendStudio-5.2.0\bin\php5\dummy.php(1): include('D:\workspace\my...')
#4 {main}end
<?php class a { public function a1 () { try { throw new Exception('123'); } catch (Exception $e) { throw $e; } } } class b { public function b1 () { try { $a = new a(); $a->a1(); } catch (Exception $e) { throw $e; //throw new Exception($e->getMessage()); } } } class c { public function c1 () { try { $a = new b(); $a->b1(); } catch (Exception $e) { throw $e; } } } try { $c = new c(); $c->c1(); } catch (Exception $e) { echo $e->getTraceAsString(); } echo 789; ?>
相关文章
Search File Contents PHP 搜索目录文本内容的代码
这个类可以用来搜索在给定的文本目录中的文件。它可以给定目录遍历递归查找某些文件扩展名的文件。2010-02-02PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
这篇文章主要介绍了PHP入门教程之字符串处理技巧,结合实例形式总结分析了php针对字符串的删除空格、特殊字符转换、过滤、解析、分割、查找、截取、替换、获取、判断、计算等操作技巧,需要的朋友可以参考下2016-09-09
最新评论