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函数和特点
Aug 08 PHP
PHP JS Ip地址及域名格式检测代码
Sep 27 PHP
PHP Curl多线程原理实例详解
Nov 06 PHP
CodeIgniter输出中文乱码的两种解决办法
Jun 12 PHP
php绘制一个矩形的方法
Jan 24 PHP
FastCGI 进程意外退出造成500错误
Jul 26 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
php基于curl主动推送最新内容给百度收录的方法
Oct 14 PHP
PHP验证终端类型是否为手机的简单实例
Feb 07 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 PHP
PHP addcslashes()函数讲解
Feb 03 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 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+DBM的同学录程序(3)
2006/10/09 PHP
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
PHP PDOStatement::getAttribute讲解
2019/02/01 PHP
表单提交验证类
2006/07/14 Javascript
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
python解析文件示例
2014/01/23 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
Python制作exe文件简单流程
2019/01/24 Python
使用python画社交网络图实例代码
2019/07/10 Python
Python将字典转换为XML的方法
2020/08/01 Python
应届生污水处理求职信
2013/11/06 职场文书
我的中国梦演讲稿小学篇
2014/08/19 职场文书
影视广告专业求职信
2014/09/02 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
Ajax常用封装库——Axios的使用
2021/05/08 Javascript
4种方法python批量修改替换列表中元素
2022/04/07 Python