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 相关文章推荐
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
基于xcache的配置与使用详解
Jun 18 PHP
PHP-Fcgi下PHP的执行时间设置方法
Aug 02 PHP
php实现斐波那契数列的简单写法
Jul 19 PHP
在Win7 中为php扩展配置Xcache
Oct 08 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
May 31 PHP
PHP编写daemon process详解及实例代码
Sep 30 PHP
php+ajax+json 详解及实例代码
Dec 12 PHP
PHP实现正则匹配所有括号中的内容
Jun 22 PHP
PHP7.3.10编译安装教程
Oct 08 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读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
php调用google接口生成二维码示例
2014/04/28 PHP
php使用cookie显示用户上次访问网站日期的方法
2015/01/26 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
jQuery $.each的用法说明
2010/03/22 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
js跳转页面方法总结
2014/01/29 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
AngularJS中一般函数参数传递用法分析
2016/11/22 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
python matplotlib 绘图 和 dpi对应关系详解
2020/03/14 Python
django 模型中的计算字段实例
2020/05/19 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
2021/02/22 Python
初三开学计划书
2014/04/27 职场文书
党员自我对照检查材料
2014/08/19 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
专项资金申请报告
2015/05/15 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
先进个人主要事迹怎么写
2015/11/04 职场文书
django中websocket的具体使用
2022/01/22 Python