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 相关文章推荐
不用GD库生成当前时间的PNG格式图象的程序
Oct 09 PHP
如何提高MYSQL数据库的查询统计速度 select 索引应用
Apr 11 PHP
php下获取客户端ip地址的函数
Mar 15 PHP
php 面试碰到过的问题 在此做下记录
Jun 09 PHP
php后台多用户权限组思路与实现程序代码分享
Feb 13 PHP
php基于socket实现SMTP发送邮件的方法
Mar 05 PHP
简单谈谈PHP vs Node.js
Jul 17 PHP
php实现微信公众号无限群发
Oct 11 PHP
详解PHP实现执行定时任务
Dec 21 PHP
PHP内置加密函数详解
Nov 20 PHP
php封装实现钉钉机器人报警接口的示例代码
Aug 08 PHP
用Laravel轻松处理千万级数据的方法实现
Dec 25 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递归法读取目录及文件的方法
2015/01/30 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
不用ajax实现点击文字即可编辑的方法
2007/12/16 Javascript
CSS+Jquery实现页面圆角框方法大全
2009/12/24 Javascript
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
2013/09/10 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
jQuery+ajax读取json数据并按照价格排序示例
2018/03/28 jQuery
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
Javascript柯里化实现原理及作用解析
2020/10/22 Javascript
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
50行Python代码实现人脸检测功能
2018/01/23 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
django ModelForm修改显示缩略图 imagefield类型的实例
2019/07/28 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
2020/02/29 Python
详解Python中第三方库Faker
2020/09/25 Python
python openssl模块安装及用法
2020/12/06 Python
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
UNIX文件系统常用命令
2012/05/25 面试题
总经理助理岗位职责
2013/11/08 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
卖房协议书样本
2014/10/30 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
mysql事务对效率的影响分析总结
2021/10/24 MySQL
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL