php Try Catch异常测试

2015-01-24信息快讯网

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

?>

Trying to clone an uncloneable object of class Imagic的解决方法
提示Trying to clone an uncloneable object of class Imagic的解决
Array of country list in PHP with Zend Framework
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
PHP开发的一些注意点总结
php更改目录及子目录下所有的文件后缀的代码
比较全面的PHP数组的使用方法小结
PHP之COOKIE支持详解
PHPCMS的使用小结
windows中PHP5.2.14以及apache2.2.16安装配置方法第1/2页
PHPnow安装服务[apache_pn]失败的问题的解决方法
利用Memcached在php下实现session机制 替换PHP的原生session支持
php checkbox 取值详细说明
ubuntu 编译安装php 5.3.3+memcache的方法
PHP Stream_*系列函数
PHP中的string类型使用说明
PHP STRING 陷阱原理说明
php下使用strpos需要注意 === 运算符
PHP extract 将数组拆分成多个变量的函数
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
php 采集书并合成txt格式的实现代码
PHP Ajax中文乱码问题解决方法
php下几个常用的去空、分组、调试数组函数
PHP 编程的 5个良好习惯
PHP 截取字符串 分别适合GB2312和UTF8编码情况
php strtotime 函数UNIX时间戳
php str_pad 函数使用详解
Google PR查询接口checksum新算法第1/2页
PHP Google的translate API代码
Apache+php+mysql在windows下的安装与配置图解(最新版)
PHP strtr() 函数使用说明
php下HTTP Response中的Chunked编码实现方法
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
PHP中str_replace函数使用小结
php preg_match_all结合str_replace替换内容中所有img
©2014-2024 dbsqp.com