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源码加密 仿微盾PHP加密专家(PHPCodeLock)
May 06 PHP
php中Smarty模板初体验
Aug 08 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
Feb 22 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
Apr 28 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
Zend Framework教程之Bootstrap类用法概述
Mar 14 PHP
PHP+Ajax实现验证码的实时验证
Jul 20 PHP
zend框架实现支持sql server的操作方法
Dec 08 PHP
YII2自动登录Cookie总是失效的解决方法
Jun 28 PHP
PHP goto语句用法实例
Aug 06 PHP
Laravel 自定命令以及生成文件的例子
Oct 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
初品cakephp 入门基础
2012/02/16 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
javascript向flash swf文件传递参数值注意细节
2012/12/11 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
Vue如何实现验证码输入交互
2020/12/07 Vue.js
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
pycharm 使用心得(五)断点调试
2014/06/06 Python
Python封装shell命令实例分析
2015/05/05 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
python如何写个俄罗斯方块
2020/11/06 Python
python自动从arxiv下载paper的示例代码
2020/12/05 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
2020/12/07 Python
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
如何写好自荐信
2014/04/07 职场文书
股东协议书
2014/04/14 职场文书
面试自我介绍演讲稿
2014/04/29 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers