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 时间设定)使用入门代码
Jun 05 PHP
php通过COM类调用组件的实现代码
Jan 11 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
Oct 24 PHP
PHP中使用localhost连接Mysql不成功的解决方法
Aug 20 PHP
php使用glob函数快速查询指定目录文件的方法
Nov 15 PHP
php提交过来的数据生成为txt文件
Apr 28 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
Yii框架实现对数据库的CURD操作示例
Sep 03 PHP
Laravel 前端资源配置教程
Oct 18 PHP
YII2框架中日志的配置与使用方法实例分析
Mar 18 PHP
PHP内存溢出优化代码详解
Feb 26 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
提取HTML标签
2006/10/09 PHP
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
用js实现随机返回数组的一个元素
2007/08/13 Javascript
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
详解ES6中的let命令
2020/04/05 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
js尾调用优化的实现
2019/05/23 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
代码分析Python地图坐标转换
2018/02/08 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
python 对key为时间的dict排序方法
2018/10/17 Python
学生信息管理系统python版
2018/10/17 Python
Python微医挂号网医生数据抓取
2019/01/24 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
python代码如何注释
2020/06/01 Python
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
实习教师自我鉴定
2013/12/12 职场文书
中学生学雷锋演讲稿
2014/04/26 职场文书
家庭教育的心得体会
2014/09/01 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
使用python求解迷宫问题的三种实现方法
2022/03/17 Python
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL