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服务器实现多session并发运行
Oct 09 PHP
改变Apache端口等配置修改方法
Jun 05 PHP
一些使用频率比较高的php函数
Oct 03 PHP
openPNE常用方法分享
Nov 29 PHP
php 判断网页是否是utf8编码的方法
Jun 06 PHP
QQ互联一键登录审核不通过的解决方案
Sep 10 PHP
PHP 实现判断用户是否手机访问
Jan 21 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
Mar 25 PHP
PHP获取数组最大值下标的方法
May 12 PHP
PHP自动补全表单的两种方法
Mar 06 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
php实现记事本案例
Oct 20 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 FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
destoon二次开发入门示例
2014/06/20 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
javascript实现倒计时效果
2020/02/17 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
python3实现随机数
2018/06/25 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
python脚本和网页有何区别
2020/07/02 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
Linux如何为某个操作添加别名
2015/02/05 面试题
实验教师岗位职责
2014/02/13 职场文书
公司门卫岗位职责
2014/03/15 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
小学教师读书活动总结
2014/07/08 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
给病人的慰问信
2015/03/23 职场文书
幼儿园教师个人工作总结2015
2015/05/12 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python