• 技术文章 >php教程 >php手册

    PHP的错误类型

    2016-06-13 10:52:18原创671
    一,程序本身的错误

    这种错误是比较容易就可以处理的错误,比如说语法错误或者是编译器无法解析,这些错误在编译的时候,就会不通过编译,然后可以根据错误的提示,找到具体的错误代码。但当使用eval()执行的代码发生错误时,在编译期间是发现不了,它只能等到代码在执行的过程中,对其编译产生错误,如我们执行下列代码,就会在执行过程中出现错误:


    [php] view plaincopy
    echo "this will be echo to putty";
    eval("php error when parser");

    ?>

    这种错误和其它的代码错误不同的是,在位于它之前的echo是可以输出的。而其它的代码错误是不会有任何输出的,因为编译就通不过,不会运行。


    二,未定义符号

    当PHP执行的时候,它可能遇到许多变量、函数等它不知道的名字,因为PHP在编译的时候,并没有完整的了解所有的符号名称、函数名等。

    如果只是未定义的常量或者变量,这是只是一个通知的形式告知。但如果是遇到未定义的函数或者类,程序将会终止运行。在关于找不到类的时候,如果用户定义了叫做__autoload的函数,它将在PHP遇到一个未定义的类时调用,如果通过这个函数可以返回类,新加载的类将会被使用,不产生任何错误。

    三,通用性错误

    3.1 操作系统所带来的差异

    一些只在某特殊的平台可用的PHP函数。

    一些在某特殊的平台不可用的PHP函数。

    一些在不同的平台下有着细微差别的PHP函数。

    区别文件名中的路径成份的字符。

    外部程序或者服务并不是在所有平台中都可用。

    3.2 PHP配置差异

    比如配置选项magic_quotes_gpc,如果这个选项是开启的,PHP将增加斜线到所有的外部数据中。这时,如果将程序移植至另一台没有开启这个选项的服务器上上时,用户的输入就会有问题了。处理类似差异的办法是检查PHP代码并通过ini_get()函数查看选项是否启用,然后作一个统一的调整。

    register_globals : 该设置决定PHP是否引入GET,POST,cookie,环境变量或者服务器变量为全局变量。一般避免使用。

    allow_url_fopen: 如果这个选项设置为false,对URL文件操作的功能是关闭的。

    3.3 SAPI差异

    四,运行错误

    如对硬盘数据或者网络操作以及数据库调用时,由于PHP本身以外的因素所造成的错误。

    五,PHP错误

    PHP中的错误机制是被所有的PHP内置函数使用的,通常这个简单的机制打印出一个错误信息,包括一些错误相关的基本信息。

    错误级别分为:

    E_ERROR:严重错误。

    E_WARNING:最普通的错误类型。

    E_PARSE:解析错误在编译的时候发生。

    E_STRICT:这个错误级别是唯一不包含在E_ALL常量中的,为了让PHP4到PHP5的迁移更加容易。

    E_NOTICE:表示运行的代码可能在操作一些未知的事情。

    E_CORE_ERROR:由于扩展启动失败等导致的。

    E_COMPILE_WARNING:编译的时候出现的警告,告诉用户一些不推荐使用的语法信息。

    E_COMPILE_ERROR:编译错误。

    E_USER_ERROR

    E_USER_WARNING

    可以用error_reporting(Integer)函数来设置哪些错误被报告。如所有的错误,表示为E_ALL ,除了通告以外的所有错误,可以表示为E_ALL & ~E_NOTICE.

    display_errors(boolean):这个设置控制错误是否作为PHP输出的一部分显示出来。

    log_errors(boolean),这个设置控制错误是否记录。日志的地址是通过error_log(String)设置决定的。默认情况下,错误被记录到WEB服务器的错误日志中。

    html_errors(boolean):设置控制是否在错误信息中采用HTML格式 。

    六,定义错误处理器

    可以调用 set_error_handler(error_handle_function,error_types)指定错误处理器。如

    function customError($errno, $errstr, $errfile, $errline)
    {
    echo "Custom error: [$errno] $errstr
    ";
    }

    set_error_handler("customError"); // 默认为所有的错误,就是E_ALL.

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:关于PHP中数组模型的一点猜想(by misko lee) 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • PHP保存带BOM文件的方法,• smarty模板引擎从php中获取数据的方法,smarty模板• php利用新浪接口查询ip获取地理位置• PHP中 ADOdb 类库介绍(下)• 创建配置文件 用PHP写出自己的BLOG系统 2
    1/1

    PHP中文网