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 相关文章推荐
如何在WIN2K下安装PHP4.04
Oct 09 PHP
亲密接触PHP之PHP语法学习笔记1
Dec 17 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
Jun 03 PHP
php中神奇的fastcgi_finish_request
May 02 PHP
PHP递归调用的小技巧讲解
Feb 19 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
php取得字符串首字母的方法
Mar 25 PHP
学习php设计模式 php实现享元模式(flyweight)
Dec 07 PHP
php获取linux命令结果的实例
Mar 13 PHP
php函数式编程简单示例
Aug 08 PHP
php校验公钥是否可用的实例方法
Sep 17 PHP
详解PHP Swoole与TCP三次握手
May 27 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
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
谈谈新手如何学习PHP
2006/12/23 PHP
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
PHP程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
很棒的js选项卡切换效果
2016/07/15 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
Angular ng-repeat指令实例以及扩展部分
2016/12/26 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
jQuery实现遍历XML节点和属性的方法示例
2018/04/29 jQuery
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
[05:08]第一届“网鱼杯”DOTA2比赛精彩集锦
2014/09/05 DOTA
python实现查询苹果手机维修进度
2015/03/16 Python
python高手之路python处理excel文件(方法汇总)
2016/01/07 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
室内设计实习自我鉴定
2013/09/25 职场文书
个人自我鉴定写法
2013/11/30 职场文书
中班上学期幼儿评语
2014/04/30 职场文书
抗洪救灾先进集体事迹材料
2014/05/26 职场文书
起诉书格式范文
2015/05/20 职场文书
红白喜事主持词
2015/07/06 职场文书
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL