PHP 5.0异常处理机制深度探索
2011年11月19日
简介:这是PHP 5.0异常处理机制深度探索的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。 class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=32 4026' scrolling='no'> 本文面向希望了解PHP5异常处理机制的程序员。阅读本文你需要具有一定面向对象编程和PHP基础。
PHP5内建的异常类需要有以下成员方法:
__construct() 构造函数,需要一个出错信息和一个可选的整型错误标记作参数
getMessage() 取得出错信息
getCode()
出错的代码
getFile() 异常发生的文件
getLine() 异常发生的行数
getTrace() 跟踪异常每一步传递的路线,存入数组,返回该数组
getTraceAsString() 和getTrace()功能一样,但可以将数组中的元素转成字符串并按一定格式输出
可以看出来,Exception 类的结构和Pear_Error 很相似。当你的脚本中遇到一个错误,你可以建立你的异常对象:
$ex = new Exception( "Could not open $this->file" ); Exception类的构造函数将接受一个出错信息和一个错误代码。
使用 throw关键字
建立一个Exception对象后你可以将对象返回,但不应该这样使用,更好的方法是用throw关键字来代替。throw用来抛出异常:
throw new Exception( "my message", 44 ); throw 将脚本的执行中止,并使相关的Exception对象对客户代码可用。
以下是改进过的getCommandObject() 方法:
index_php5.php
<?php // PHP 5
require_once('cmd_php5/Command.php');
class CommandManager {
private $cmdDir = "cmd_php5";
function getCommandObject($cmd) {
$path = "{$this->cmdDir}/{$cmd}.php";
if (!file_exists($path)) {
throw new Exception("Cannot find $path");
}
require_once $path;
if (!class_exists($cmd)) {
throw new Exception("class $cmd does not exist");
}
$class = new ReflectionClass($cmd);
if (!$class->isSubclassOf(new ReflectionClass('Command'))) {
throw new Exception("$cmd is not a Command");
}
return new $cmd();
}
}
?> 代码中我们使用了PHP5的反射(Reflection)API来判断所给的类是否是属于Command 类型。在错误的路径下执行本脚本将会报出这样的错误:
Fatal error: Uncaught exception 'Exception' with message 'Cannot find command/xrealcommand.php' in /home/xyz/BasicException.php:10
Stack trace:
#0 /home/xyz/BasicException.php(26):
CommandManager->getCommandObject('xrealcommand')
#1 {main}
thrown in /home/xyz/BasicException.php on line 10 默认地,抛出异常导致一个fatal error。这意味着使用异常的类内建有安全机制。而仅仅使用一个错误标记,不能拥有这样的功能。处理错误标记失败只会你的脚本使用错误的值来继续执行。
Try-catch 语句
为了进一步处理异常,我们需要使用try-catch语句
发表评论
-
2012年高考备考(105)武汉市武昌区高三元月调研测试
2012-01-20 11:17 5722012年高考备考(105)武汉市武昌区高三元月调研测试 1 ... -
1月1周低卡饮食 吃出好身材
2012-01-20 11:16 6131月1周低卡饮食 吃出好身材 12小时前 不想节食 ... -
STC ISP
2012-01-20 11:16 976STC ISP 2012年01月12日 ... -
【转】 c51错误2
2012-01-19 16:05 2604【转】 c51错误2 2011年08 ... -
如何更改群集服务帐户密码
2012-01-19 16:04 921如何更改群集服务帐户 ... -
短信的收发及在android模拟器之间实践
2012-01-19 16:04 742短信的收发及在android模 ... -
PHP5的异常处理机制(二)
2012-01-19 16:04 647PHP5的异常处理机制(二) 2011年12月15日 根 ... -
铁路企业职工再加薪 一线员工每月至少涨620元
2012-01-17 05:56 588铁路企业职工再加薪 一 ... -
泰国副总理:已获本国军人杀害中国船员充分证据
2012-01-17 05:56 515泰国副总理:已获本国军人杀害中国船员充分证据 2012年01 ... -
大范围雨雪天气10日起侵袭南方 或对春运不利
2012-01-17 05:56 585大范围雨雪天气10日起 ... -
广州8所机关幼儿园获补7524万 比去年增1770万
2012-01-17 05:56 476广州8所机关幼儿园获补7524万 比去年增1770万 201 ... -
Black Duck - Guan Yin Bodhisattva in Mind (2006)
2012-01-17 05:56 681Black Duck - Guan Yin Bodhisatt ... -
皇帝木--识鉴金丝楠木
2012-01-16 04:43 542皇帝木--识鉴金丝楠木 ... -
第四章 中国传统文化的发展历程
2012-01-16 04:43 760第四章 中国传统文化的发展历程 2012年01月04日 ... -
孟氏家族家规
2012-01-16 04:43 1553孟氏家族家规 2012年01月04日 孟氏家族家规(转载 ... -
中国哲学史(先秦部分)-------简答
2012-01-16 04:43 504中国哲学史(先秦部分)-------简答 2012年01月0 ...
相关推荐
pfc后处理功能介绍,包括如何导出图片、如何导出数据等等,有利于后期文章的撰写和输出等等。
php5.0参考手册php5.0参考手册php5.0参考手册php5.0参考手册php5.0参考手册php5.0参考手册php5.0参考手册php5.0参考手册php5.0参考手册php5.0参考手册php5.0参考手册php5.0参考手册php5.0参考手册php5.0参考手册...
php5.0 php5.0 php5.0 php5.0 php5.0
YGW5.0易管网5.0易管网5.0管线处理YGW5.0易管网5.0易管网5.0管线处理
php5.0中文手册,php开发必备,需要者就下载
PHP5.0中文参考手册,内容全面,有很多的实例,是PHP开发者不可多得的好书
描述WINCE5.0中断机制,调用的函数及过程
php5.0中文手册(chm版)php5.0中文手册(chm版)
php5.0的中文手册,很不错
PHP5.0 很好的PHP配置环境,直接下载安装就可以的 PHP5.0 很好的PHP配置环境,直接下载安装就可以的 PHP5.0 很好的PHP配置环境,直接下载安装就可以的
tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0tomcat 5.0
文件 深度一键还原5.0 支持vista系统。
VBUC 5.0 VBUC 5.0 VBUC 5.0 VBUC 5.0
最新 PHP PHP5.0 英文帮助 手册最新 PHP PHP5.0 英文帮助 手册最新 PHP PHP5.0 英文帮助 手册最新 PHP PHP5.0 英文帮助 手册最新 PHP PHP5.0 英文帮助 手册
要用到ipp库,用mfc实现图象处理的一些简单模块。
极通5.0注册过期处理办
PHP环境配置,环境为IIS5.0+PHP5.23+MYSQL5+phpMyAdmin
J2SE_5.0_第04章_异常处理1.rar
CardView显示圆形在5.0以上手机能正常显示,5.0以下手机显示就有bug,该demo能解决5.0以下手机CardView的问题
Windows平台下PHP5.0+Mysql4.1.x环境架设