自定义错误set_error_handler(5)

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

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除外的所有错误和警告信息。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • PHP错误简介 PHP提供了错误处理和日志记录的功能. 这些函数允许你定义自己的错误处理规则,以及修改错误...
    四月不见阅读 8,867评论 0 7
  • 自定义错误处理器 我们写程序,难免会有问题(是经常会遇到问题),而PHP遇到错误时,就会给出出错脚本的位置、行数和...
    蓝洛333阅读 1,586评论 0 0
  • 由于历史原因,php一开始被设计为一门面向过程的语言,所以异常处理没有使用像Java一样的 try / catch...
    骑着大象去上班阅读 3,097评论 0 0
  • 前言 最近项目中有一个功能需要实现:调试模式下, 将所有错误提前输出, 再输出页面内容. 为实现上述功能, 需使用...
    MinkChannel阅读 5,879评论 1 15
  • 异常与错误异常是指程序运行中不符合预期情况以及与正常流程不同的状况。错误则属于自身问题,是一种非法语法或者环境问题...
    riyihu阅读 2,415评论 1 1