- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安PHP维护基地 来源:黑客防线网安PHP维护基地 浏览次数:0 |
第一部分
保护你的代码
即使是最好的开发人员有时也会犯错误。那就是为什么大部分编程语言(包括PHP)提供了内建的捕获错误然后采取补救措施的能力。这个措施可以和显示一条错误消息一样简单,或者和向站点管理员发送一封具有完整的堆栈路径的电子邮件一样复杂。
为了更容易地执行这些,PHP提供了完整特征错误处理API,该API可用于捕获和解决错误。除了决定用户可见哪种类型的错误之外,你也可以使用你自己自定义(通常来讲,更有创造性的)函数来代替内建的错误处理机制。如果你正在使用PHP 5,那么你就得到一个意外收获:一种全新的异常模型,该模型允许你将你的代码以类似于Java的try-catch()块结构封装起来以获得更加有效的错误处理。
在PHP 101的本次版本中,我将会讨论所有的这些事情,给你一个如何在你的PHP应用中增加错误处理的快速课程。继续阅读吧,因为这是一个非常酷的玩意!
在我们进入如何编写错误处理器的本质之前,你需要知道一些理论知识。
通常情况下,当一个PHP脚本遇到一个错误时,它显示一条指示错误原因的消息然后可能也(取决于错误的严重程度)终止脚本的执行。现在,虽然这种行为在开发阶段是可以接受的,但一旦PHP应用程序被分发到真实的用户时它就不能再继续发生了。在“实况”情况下,显示模糊的错误消息(通常情况下对非技术用户是不能理解的)是不够专业的;拦截这些错误然后或者解决错误(如果解决方法可行的话)或者以一种易于理解的错误消息通知用户(如果解决方法不可行的话)而更加专业。
PHP中有三种基本的运行时间错误类型:
1. 注意:当执行一个脚本时,这些是PHP遇到的微不足道的、非关键性的错误(比如,访问一个仍没有被定义的变量)。默认情况下,这类错误根本不会被展示给用户(但是,正如你将看到的,你可以改变这种默认行为)。
2.警告:这是更严重的错误(比如,试图包含一个不存在的文件)。默认情况下,这些错误被显示给用户,但它们不会导致脚本终止执行。
3. 致命错误:这类错误是严重的错误(比如,例示一个不存在的类的对象或者调用一个不存在的函数)。这些错误导致脚本立即终止执行,然后PHP的默认行为就是当它们发生时将其显示给用户。
应了解,PHP脚本中的语法错误(比如,丢失括号或者分号)被作为一个致命错误且导致脚本的终止运行。那就是为什么如果你在你的PHP语句结尾忘记分号,那么PHP将会拒绝执行你的脚本直到你修正了这个错误的原因。
PHP错误可以由Zend引擎、PHP内建函数或者用户自定义函数来产生。它们可能发生在开始、解析、编译或者运行时。在PHP内部,这些变化可以由12种不同的错误类型来表示(PHP 5中的),而且你可以在http://www.php.net/manual/en/ref.errorfunc.php中阅读关于它们的信息。指定的常量(比如E_NOTICE和E_USER_ERROR)提供了一种方便的方法以涉及不同的错误类型。
这里是一个快捷的提示:大部分时间里,你将会担心运行时间错误(E_NOTICE、E_WARNING和E_ERROR)和用户触发错误((E_USER_NOTICE、E_USER_WARNING和E_USER_ERROR)。在调试阶段期间,你可以使用捷径E_ALL类型来看你的脚本所产生的所有的致命和非致命错误,而且在PHP 5中,你也可能打算使用新的E_STRICT错误类型来查看影响你的代码前向兼容性的错误。
早期告警
将理论放到一旁,让我们现在将其应用到一些例子中。考虑下面的代码段:
undefined
undefined
<?
php
//
initialize the $string variable
$
string
=
'
a string
'
;
//
explode() a string
//
this will generate a warning or E_WARNING because the number of arguments to explode() is incorrect
explode($
string
);
?>
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |