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 相关文章推荐
PHP高自定义性安全验证码代码
Nov 27 PHP
PHP中header和session_start前不能有输出原因分析
Jan 11 PHP
简单的cookie计数器实现源码
Jun 07 PHP
php生成图形验证码几种方法小结
Aug 15 PHP
Yii实现自动加载类地图的方法
Apr 01 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
php分割合并两个字符串的函数实例
Jun 19 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
Jul 06 PHP
thinkphp框架下404页面设置 仅三步
May 14 PHP
PHP中字符串长度的截取用法示例
Jan 12 PHP
php写入mysql中文乱码的实例解决方法
Sep 17 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 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 socke 向指定页面提交数据
2008/07/23 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
能说明你的Javascript技术很烂的五个原因分析
2011/10/28 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
java必学必会之static关键字
2015/12/03 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
Python 除法小技巧
2008/09/06 Python
Python利用Beautiful Soup模块搜索内容详解
2017/03/29 Python
Python生成密码库功能示例
2017/05/23 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
会计学习心得体会
2014/09/09 职场文书
名人演讲稿范文
2014/09/16 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
二十年同学聚会感言
2015/07/30 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫