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 相关文章推荐
Ajax PHP简单入门教程代码
Apr 25 PHP
用PHP调用Oracle存储过程的方法
Sep 12 PHP
php文章内容分页并生成相应的htm静态页面代码
Jun 07 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 PHP
php上传文件中文文件名乱码的解决方法
Nov 01 PHP
一个好用的PHP验证码类实例分享
Dec 27 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
Dec 17 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
laravel 中如何使用ajax和vue总结
Aug 16 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
PHP parse_ini_file函数的应用与扩展操作示例
Jan 07 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读MYSQL中文乱码的解决方法
2006/12/17 PHP
选择PHP作为网站开发语言的原因分享
2012/01/03 PHP
Linux编译升级php的详细方法
2013/11/04 PHP
PHP基本语法总结
2014/09/06 PHP
zend framework重定向方法小结
2016/05/28 PHP
document.forms[].submit()使用介绍
2014/02/19 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
2019/06/21 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
python去重,一个由dict组成的list的去重示例
2019/01/21 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
django 解决自定义序列化返回处理数据为null的问题
2020/05/20 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
利用CSS3实现动态的二级三级菜单效果实例源码
2017/01/04 HTML / CSS
巴黎一票通:The Paris Pass
2018/02/10 全球购物
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
中餐厅主管的职责范文
2014/02/04 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
2015年度党员个人总结
2015/02/14 职场文书
清洁工个人总结
2015/03/04 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
高中语文教材(文学文化常识大全一)
2019/08/13 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
Java并发编程必备之Future机制
2021/06/30 Java/Android