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 strtr() 函数使用说明
Nov 21 PHP
PHP中文件上传的一个问题
Sep 04 PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 PHP
PHP获取当前所在目录位置的方法
Nov 26 PHP
php给图片加文字水印
Jul 31 PHP
ThinkPHP框架安全实现分析
Mar 14 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 PHP
php简单实现多维数组排序的方法
Sep 30 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
Jun 09 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
PHP实现简易图形计算器
Aug 28 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中ob_start函数的使用说明
2013/11/11 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
再论Javascript的类继承
2011/03/05 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
jQuery function的正确书写方法
2013/08/02 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
Python 通过URL打开图片实例详解
2017/06/01 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
python安装gdal的两种方法
2019/10/29 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
tensorboard显示空白的解决
2020/02/15 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
python中Django文件上传方法详解
2020/08/05 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
最新会计专业求职信范文
2014/01/28 职场文书
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
2014企业年终工作总结
2014/12/23 职场文书
团组织推荐意见
2015/06/05 职场文书