日期:2014-05-17  浏览次数:20726 次

php 错误处理
一、错误的种类

查看源码复制到剪切板打印帮助
; E_ALL         //-所有的错误和警告,(不包含E_STRICT). 
; E_ERROR       //-致命的运行时错误 
; E_RECOVERABLE_ERROR   //- 几乎致命的运行时错误 
; E_WARNING     //- 运行时的警告(非致命错误) 
; E_PARSE       //-编译时解析错误 
; E_NOTICE      //- 运行时的提示,这些提示常常是代码中的bug引起的。 
; E_STRICT      //- 运行时提示,能够给于PHP建议,以改善你的代码。 
; E_CORE_ERROR      //- PHP 初始化启动过程中的致命错误。 
; E_CORE_WARNING    //- PHP 初始化启动过程中的非致命错误。 
; E_COMPILE_ERROR   //- 致命的编译错误。 
; E_COMPILE_WARNING //– 编译错误(非致命的错误)。 
; E_USER_ERROR      //- 用户错误信息。 
; E_USER_WARNING    //- 用户警告信息。 
; E_USER_NOTICE     //-用户提示信息。; 
二、php.ini 配置错误显示与否

查看源码复制到剪切板打印帮助
//1、错误消息输出到用户端(调试代码时候,打开这项更方便) 
display_errors = ON 
 
//2、错误消息将不会输出到用户端(最终发布给用户时记得改成off) 
display_errors = OFF 
三、php.ini 错误输出配置推荐

查看源码复制到剪切板打印帮助
//1、表示输出所有的信息。 
error_reporting  = E_ALL   
 
//2、表示输出所有的错误,除了提示。 
error_reporting  = E_ALL & ~E_NOTICE  
 
//3、表示输出所有的 ERROR  信息。 
error_reporting  = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  
四、php 中调整整错误级别

1、错误级别列表

值   错误代码 
1   E_ERROR 
2   E_WARNING 
4   E_PARSE 
8   E_NOTICE 
16  E_CORE_ERROR 
32  E_CORE_WARNING 
64  E_COMPILE_ERROR 
128 E_COMPILE_WARNING 
256 E_USER_ERROR 
512 E_USER_WARNING 
1024    E_USER_NOTICE 
2047    E_ALL 
2048    E_STRICT 
4096    E_RECOVERABLE_ERROR 
2、使用 error_reporting ( [int level] ) 调整错误级别

例子

查看源码复制到剪切板打印帮助
error_reporting(0); //关闭所有错误显示 
 
error_reporting(E_ERROR | E_WARNING | E_PARSE); 
 
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); 
 
error_reporting(E_ALL ^ E_NOTICE); //php.ini错误值。 
 
error_reporting(E_ALL); //显示所有错误信息。 
五、自定义错误函数处理

1、使用 set_error_handler()函数向系统声明错误处理函数

2、使用 trigger_error()函数,可以触发一个 error

例子

查看源码复制到剪切板打印帮助
function myErrorHandler($errno, $errstr, $errfile, $errline) 

    switch ($errno) { 
        case E_USER_ERROR: 
            echo "<b>My ERROR</b> [$errno] $errstr\n"; 
            echo "  Fatal error in line $errline of file $errfile"; 
            echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")\n"; 
            echo "Aborting...\n"; 
            exit(1); 
            break; 
      case E_USER_WARNING: 
            echo "<b>My WARNING</b> [$errno] $errstr\n"; 
            break;