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项目的方法
Oct 09 PHP
PHP 简单数组排序实现代码
Aug 05 PHP
php面向对象全攻略 (三)特殊的引用“$this”的使用
Sep 30 PHP
Zend Studio (eclipse)使用速度优化方法
Mar 23 PHP
php数组函数序列之array_search()- 按元素值返回键名
Nov 04 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
Jun 28 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
Aug 09 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
Jul 04 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
php中static 静态变量和普通变量的区别
Dec 01 PHP
PHP中检查isset()和!empty()函数的必要性
Feb 13 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
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
JS 自定义带默认值的函数
2011/07/21 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
《JavaScript函数式编程》读后感
2015/08/07 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
新手入门js闭包学习过程解析
2019/10/08 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
2020/02/17 Javascript
js实现烟花特效
2020/03/02 Javascript
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
python使用super()出现错误解决办法
2017/08/14 Python
Django 内置权限扩展案例详解
2019/03/04 Python
python多线程下信号处理程序示例
2019/05/31 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
python实现文法左递归的消除方法
2020/05/22 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
设计师珠宝:Ylang 23
2018/05/11 全球购物
学校消防安全制度
2014/01/30 职场文书
元旦联欢会主持词
2014/03/26 职场文书
应届生求职信
2014/05/31 职场文书
家庭教育的心得体会
2014/09/01 职场文书
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js
使用python绘制分组对比柱状图
2022/04/21 Python