🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
php的默认错误处理是将消息输出。但是,有时候需要定义一些其他操作,这时就需要自定义错误处理函数。php提供内置函数set\_error\_handler可以帮助我们注册自己的错误处理函数(此函数可以用你自己定义的方式来处理运行中的错误比如返回json) 在这个异常处理程序被调用后,脚本会停止执行 可知,他能够捕获一部分错误,不能捕获系统级E\_ERROR、E\_PARSE等错误,但是这部分可以由register\_shutdown\_function()捕获 **set_error_handler** ( callable `$error_handler` \[, int `$error_types` = E_ALL | E_STRICT ] ) : mixed >[danger]`error_types` 里指定的错误类型都会绕过 PHP 标准错误处理程序, 除非回调函数返回了 **`FALSE`**。 error_reporting() 设置将不会起到作用而你的错误函数继续会被调用 它将接管PHP原生错误处理函数,即当error_types为E_ALL | E_STRICT时所有的错误都会交给自定义的函数处理 第一个参数的回调函数 **error_handler** ( int `$errno` , string `$errstr` \[, string `$errfile` \[, int `$errline` \[, array `$errcontext` \]\]\] ) : bool ``` function error_handler($errno , $errstr, $errfile, $errline){ echo "错误级别的编号errno: $errno<br>"; echo "错误信息errstr: $errstr<br>"; echo "出错文件errfile: $errfile<br>"; echo "出错行号errline: $errline<br><br>"; } ``` **不支持的错误级别:** 导致脚本终止的错误都不支持 | 值 | 常量 | 说明 | | --- | --- | --- | | 0 | | 关闭错误输出,即什么错误也不输出 | | 1 | **~~E_ERROR~~** | 致命的运行时错误。这类错误一般是不可恢复的情况,例如内存分配导致的问题。后果是:**导致脚本终止不再继续运行**。 | | 2 | **E_WARNING** | 运行时警告 (非致命错误)。仅给出提示信息,但是脚本不会终止运行。 | | 4 | **~~E_PARSE~~** | 编译时语法解析错误。解析错误仅仅由分析器产生。**导致脚本终止不再继续运行** | | 8 | **E_NOTICE** | 运行时通知。表示脚本遇到可能会表现为错误的情况,但是在可以正常运行的脚本里面也可能会有类似的通知。 | | 16 | **~~E_CORE_ERROR~~** | 在PHP初始化启动过程中发生的致命错误。该错误类似 **E_ERROR**,但是是由PHP引擎核心产生的。**导致脚本终止不再继续运行** | | 32 | **~~E_CORE_WARNING~~** | PHP初始化启动过程中发生的警告 (非致命错误) 。类似 **E_WARNING**,但是是由PHP引擎核心产生的。 | | 64 | **~~E_COMPILE_ERROR~~** | 致命编译时错误。类似**E_ERROR**, 但是是由Zend脚本引擎产生的。**导致脚本终止不再继续运行** | | 128 | **~~E_COMPILE_WARNING~~** | 编译时警告 (非致命错误)。类似 **E_WARNING**,但是是由Zend脚本引擎产生的。 | | 256 | **E_USER_ERROR** | 用户产生的错误信息。类似 **E_ERROR**, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。**导致脚本终止不再继续运行** | | 512 | **E_USER_WARNING** | 用户产生的警告信息。类似 **E_WARNING**, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 | | 1024 | **E_USER_NOTICE** | 用户产生的通知信息。类似 **E_NOTICE**, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 | | 2048 | **~~E_STRICT~~** | 启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。 | | 4096 | **E_RECOVERABLE_ERROR** ,将成为一个 **E_ERROR** 从而脚本会终止运行。 | | 8192 | **E_DEPRECATED** | 运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。 | | 16384 | **E_USER_DEPRECATED** | 用户产少的警告信息。 类似 **E_DEPRECATED**, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 | | 30719 | **E_ALL** | **E_STRICT**除外的所有错误和警告信息。 |