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 相关文章推荐
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 PHP
php中引用符号(&amp;)的使用详解
Nov 13 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
php读取csc文件并输出
May 21 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
PHP定时执行任务的3种方法详解
Dec 21 PHP
简介PHP的Yii框架中缓存的一些高级用法
Mar 29 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
Laravel用户授权系统的使用方法示例
Sep 16 PHP
thinkphp整合系列之极验滑动验证码geetest功能
Jun 18 PHP
分享8个Laravel模型时间戳使用技巧小结
Feb 12 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
一个程序下载的管理程序(四)
2006/10/09 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
js中浮点型运算BUG的解决方法说明
2014/01/06 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
jQuery制作简洁的图片轮播效果
2015/04/03 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
jquery利用json实现页面之间传值的实例解析
2016/12/12 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
JS重学系列之聊聊new操作符
2019/03/04 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
Python实现手势识别
2020/10/21 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
个人简历自我评价范文
2014/02/04 职场文书
会务接待方案
2014/02/27 职场文书
入党思想汇报怎么写
2014/04/03 职场文书
2015年办公室工作总结范文
2015/03/31 职场文书
工作年限证明模板
2015/06/15 职场文书
python实战之90行代码写个猜数字游戏
2021/04/22 Python
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python