php Try Catch异常测试

 更新时间:2009年03月01日 23:20:14   投稿:mdxy-dxy  
首先感谢老曹同学。。。主要测试了多层级使用异常。 注意蓝色加粗字。

页面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;

?>

相关文章

  • 通过PHP current函数获取未知字符键名数组第一个元素的值

    通过PHP current函数获取未知字符键名数组第一个元素的值

    在开发中经常遇到这样问题,获取数组第一个元素的值,如果是数字索引那还好,直接$array[0],如果键名是字符串,你又未知这个字符串呢?用current()函数就可以做到
    2013-06-06
  • php实现mysql同步的实现方法

    php实现mysql同步的实现方法

    由于公司的英文网站放置在美国,而这些网站的数据要与大陆的服务器数据同步。 同步时间在一天之内。
    2009-10-10
  • php实现过滤UBB代码的类

    php实现过滤UBB代码的类

    这篇文章主要介绍了php实现过滤UBB代码的类,涉及php正则表达式的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • PHP字符串比较函数strcmp()和strcasecmp()使用总结

    PHP字符串比较函数strcmp()和strcasecmp()使用总结

    这篇文章主要介绍了PHP字符串比较函数strcmp()和strcasecmp()使用总结,本文分别对它们做了详细介绍,并给出了具体使用示例,需要的朋友可以参考下
    2014-11-11
  • 详解PHP排序函数的使用方法

    详解PHP排序函数的使用方法

    这篇文章主要给大家介绍了PHP排序函数的使用方法,文章通过代码示例介绍的非常详细,PHP排序函数的使用方法,需要的朋友可以参考下
    2023-09-09
  • 如何使用php判断所处服务器操作系统的类型

    如何使用php判断所处服务器操作系统的类型

    本篇文章是对如何使用php判断所处服务器操作系统的类型进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 小文件php+SQLite存储方案

    小文件php+SQLite存储方案

    在互联网快速发展的背景下,网络上的数据内容呈几何级的增长,而其中增长最快并且最容易给信息基础架构带来挑战的就是数目庞大的小文件(如图片、电子图书、邮件等)。
    2010-09-09
  • 使用Codeigniter重写insert的方法(推荐)

    使用Codeigniter重写insert的方法(推荐)

    下面小编就为大家带来一篇使用Codeigniter重写insert的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • PHP中strtr字符串替换用法详解

    PHP中strtr字符串替换用法详解

    这篇文章主要介绍了PHP中strtr字符串替换用法,以大量实例详细解读了strtr字符串替换的用法与技巧,并与str_replace做了对比以加深理解,需要的朋友可以参考下
    2014-11-11
  • 发一个php简单的伪原创程序,配合商城采集用的

    发一个php简单的伪原创程序,配合商城采集用的

    在网上搜了一个伪原创的程序,下下来,结果太令人惊奇的。以前也在为如何将一段文字里的某些词替换掉而苦恼,原来php有个strtr函数.
    2010-10-10

最新评论