`
jimphei
  • 浏览: 39741 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

php的错误和异常(转载)

    博客分类:
  • php
阅读更多

一个正规的程序或项目不但代码优美,可读性强,而且错误和异常处理信息也要明确直观,这样对我们以后的项目维护带来很大的方便性,好了,咱们就一一介绍下吧:

一、exit(),die()和trigger_error()
      首先die()同等于exit(),两者如果执行都会中止PHP程序,而且在死之前都可以留句遗言!exit()和die()唯一不同的是exit() 可以返回0--254状态值,0表示返回成功。trigger_error()生成一个用户警告来代替,使程序更具有灵活性.例如: trigger_error("Cannot find file", E_USER_ERROR); 使用trigger_error()函数来替代die(),你的代码在处理错误上会更具优势,对于客户程序员来说更易于处理错误。

二、应该常用 return false
     在做判断时,如果为否则返回return false;是一个不错的选择,因为它会在你输出相关错误信息时继续执行程序。明显return false输出的错误信息量不足,对调试带来不便,所以建议在它之前可以做预输出错误信息。

三、error_reporting() 和 set_error_handler()
      error_reporting()是定义错误信息级别,分别有
   E_ALL输出所有错误信息
   E_NOTICE 表示一般情形不记录,只有程式有错误情形时才用到,例如企图存取一个不存在的变数,或是    呼 叫stat() 函式检视不存在的档案。
   E_WARNING 通常都会显示出来,但不会中断程式的执行。这对除错很有效。例如:用有问题的常规表示法呼叫 ereg()。
   E_ERROR 通常会显示出来,亦会中断程式执行。意即用这个遮罩无法追查到记忆体配置或其它的错误。
   E_PARSE 从语法中剖析错误。
   E_CORE_ERROR 类似 E_ERROR,但不包括 PHP 核心造成的错误。
   E_CORE_WARNING 类似 E_WARNING,但不包括 PHP 核心错误警告。
      set_error_handler()是自定义的错误处理函数一定要有这4个输入变量$errno,$errstr,$errfile,$errline,否则无效。分别为是否存在错误,错误信息,错误文件,错误行号.

四、异常处理机制
    异常处理机制是在PHP5加入的,类似想JAVA的异常吧,在 PHP 代码中所产生的异常可被 throw 语句抛出并被 catch 语句捕获。需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常。每一个 try 至少要有一个与之对应的 catch。使用多个 catch 可以捕获不同的类所产生的异常。当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。当然,PHP 允许在 catch 代码块内再次抛出(throw)异常。PHP5的内建异常类是Exception ,以下是代码实例:

======================================

<?php
try {
    $error = 'Always throw this error';
    throw new Exception($error);

    // 从这里开始,tra 代码块内的代码将不会被执行
    echo 'Never executed';

} catch (Exception $e) {
    echo 'Caught exception: ',   $e->getMessage(), "\n";
}

// 继续执行
echo 'Hello World';
?>

======================================

根据我们以上讨论的,PHP内建的异常类需要有以下成员方法:

__construct()
构造函数,需要一个出错信息和一个可选的整型错误标记作参数

getMessage()
取得出错信息

getCode()
出错的代码

getFile()
异常发生的文件

getLine()
异常发生的行数

getTrace()
跟踪异常每一步传递的路线,存入数组,返回该数组

getTraceAsString()
和getTrace()功能一样,但可以将数组中的元素转成字符串并按一定格式输出

异常机制提供了几个非常关键的好处:
(1) 通过将错误处理集中于catch语句中,你可以将错误处理从应用流程中独立出来。这也使代码的可读性提高,看起来令人愉快。我通常采取非常严格的策略来捕捉所有异常并中止脚本执行。这样可以获得所需的附加的弹性,同时实现安全易用的异常管理。
(2) 重掷异常,将异常数据流从低层传递至高层,就是说异常被传回最适合决定如何处理异常的地方。这看起来会显得有点奇怪,但实际情况中很经常我们在异常发生的时候无法立刻决定如何处理它。
(3) 异常机制提供的Throw/catch避免了直接返回错误标识,方法的返回值是可以由你的类来决定的。其它程序员使用你的代码时,可以指定返回一个他希望的形式,而不需要令人疲倦的不停地测试。

分享到:
评论

相关推荐

    一米阳光项目转载phpwind668—关于PHP

    5. 错误与异常处理:理解错误报告级别和如何捕获并处理异常。 6. 类与对象:PHP 5 引入了面向对象编程,包括类、对象、继承、封装和多态。 【PHPWind 6.68 功能特性】 PHPWind 6.68 版本包含以下主要功能: 1. ...

    《PHP网络编程从入门到精通》代码

    另外,错误处理和异常处理也是重要的学习环节,它们可以帮助开发者编写健壮的代码。 此外,安全性是网络编程中不可或缺的一部分。书可能会涵盖预防SQL注入、XSS攻击(跨站脚本攻击)和CSRF(跨站请求伪造)等常见...

    NTWDBLIB.DLL这个文件的版本号为2000.80.2039.0

    连接SQL SERVER2000数据库的方法,却掉PHP.ini文件中那extension……mssql什么的那一句前面的“;...本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cao_shg/archive/2010/03/10/5366313.aspx

    洪恩在线成语词典小偷程序php版

    10. **代码注释的重要性**:文档中特别强调了“凡人博客原创代码,转载请注明”,这提示我们在学习和使用他人代码时,应尊重原作者的版权和劳动成果,注明代码来源。同时,代码中的注释有助于理解程序的设计思路和...

    thinkPHP5快速入门手册

    - **异常处理**:说明异常处理机制,包括自定义异常类和处理策略。 #### 九、API开发 - **RESTful API设计**:指导如何设计符合RESTful风格的API接口。 - **认证授权**:介绍API的安全认证和权限控制方案。 - **...

Global site tag (gtag.js) - Google Analytics