zjxhx 发表于 2017-3-20 10:37:56

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
16E_CORE_ERROR
32E_CORE_WARNING
64E_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 ( ) 调整错误级别

例子

查看源码复制到剪切板打印帮助
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;
      case E_USER_NOTICE:
            echo "<b>My NOTICE</b> [$errno] $errstr\n";
            break;
      default:
            echo "Unknown error type: [$errno] $errstr\n";
            break;
      }
}

//定义错误处理函数.
set_error_handler("myErrorHandler");   

//假设出现了负数的年龄,这明显是错误的。
$age = -100;   

if ($age < 0) {
    //触发错误;
    trigger_error("age you inputmust >= 0", E_USER_ERROR);
}
页: [1]
查看完整版本: php 错误处理