php Try Catch异常测试


Posted in PHP onMarch 01, 2009

页面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 相关文章推荐
IIS环境下快速安装、配置和调试PHP5.2.0
Dec 17 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 PHP
PHP解析目录路径的3个函数总结
Nov 18 PHP
ThinkPHP实现动态包含文件的方法
Nov 29 PHP
CI框架数据库查询之join用法分析
May 18 PHP
解析 thinkphp 框架中的部分方法
May 07 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
Aug 01 PHP
PHP中实现中文字串截取无乱码的解决方法
May 29 PHP
PHP抽象类基本用法示例
Dec 28 PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 PHP
php将字符串转换为数组实例讲解
May 05 PHP
php 采集书并合成txt格式的实现代码
Mar 01 #PHP
PHP Ajax中文乱码问题解决方法
Feb 27 #PHP
php下几个常用的去空、分组、调试数组函数
Feb 22 #PHP
PHP 编程的 5个良好习惯
Feb 20 #PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
Feb 12 #PHP
PHP 操作文件的一些FAQ总结
Feb 12 #PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
Feb 10 #PHP
You might like
PHP的面试题集,附我的答案和分析(一)
2006/11/19 PHP
php检测url是否存在的方法
2015/04/14 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
PHP hex2bin()函数用法讲解
2019/02/25 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
js计算系统当前日期是星期几的方法
2016/07/14 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
JavaScript实现HSL拾色器
2020/05/21 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
Python算法应用实战之栈详解
2017/02/04 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
python 字典操作提取key,value的方法
2019/06/26 Python
django创建css文件夹的具体方法
2020/07/31 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
数据库什么时候应该被重组
2012/11/02 面试题
端口镜像是怎么实现的
2014/03/25 面试题
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
感谢师恩主题班会
2015/08/17 职场文书
MySQL查询学习之基础查询操作
2021/05/08 MySQL
Nginx四层负载均衡的配置指南
2021/06/11 Servers
python中出现invalid syntax报错的几种原因分析
2022/02/12 Python
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电
css中:last-child不生效的解决方法
2022/08/05 HTML / CSS