百科狗-知识改变命运!
--

set_error_handler() - php 错误处理日志函数

乐乐1年前 (2023-11-21)阅读数 21#技术干货
文章标签错误

set_error_handler()

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

设置用户自定义的错误处理函数

说明

set_error_handler(callable $error_handler[,int $error_types= E_ALL | E_STRICT]): mixed

设置用户的函数($error_handler)来处理脚本中出现的错误。

本函数可以用你自己定义的方式来处理运行中的错误,例如,在应用程序中严重错误发生时,或者在特定条件下触发了一个错误(使用trigger_error()),你需要对数据/文件做清理回收。

重要的是要记住$error_types里指定的错误类型都会绕过 PHP 标准错误处理程序,除非回调函数返回了FALSE。error_reporting()设置将不会起到作用而你的错误处理函数继续会被调用——不过你仍然可以获取error_reporting的当前值,并做适当处理。需要特别注意的是带@ error-control operator前缀的语句发生错误时,这个值会是 0。

同时注意,在需要时你有责任使用die()。如果错误处理程序返回了,脚本将会继续执行发生错误的后一行。

set_error_handler() - php 错误处理日志函数

以下级别的错误不能由用户定义的函数来处理:E_ERRORE_PARSEE_CORE_ERRORE_CORE_WARNINGE_COMPILE_ERRORE_COMPILE_WARNING,和在调用set_error_handler()函数所在文件中产生的大多数E_STRICT

如果错误发生在脚本执行之前(比如文件上传时),将不会调用自定义的错误处理程序因为它尚未在那时注册。

参数

$error_handler

以下格式的回调(callback):可以传入NULL重置处理程序到默认状态。除了可以传入函数名,还可以传入引用对象和对象方法名的数组。

handler(int $errno,string $errstr[,string $errfile[,int $errline[,array $errcontext]]]): bool$errno第一个参数$errno,包含了错误的级别,是一个 integer。$errstr第二个参数$errstr,包含了错误的信息,是一个 string。$errfile第三个参数是可选的,$errfile,包含了发生错误的文件名,是一个 string。$errline第四个参数是一个可选项,$errline,包含了错误发生的行号,是一个 integer。$errcontext第五个可选参数,$errcontext,是一个指向错误发生时活动符号表的 array。也就是说,$errcontext会包含错误触发处作用域内所有变量的数组。用户的错误处理程序不应该修改错误上下文(context)。Warning

PHP 7.2.0 后此参数被弃用了。极其不建议依赖它。

如果函数返回FALSE,标准错误处理处理程序将会继续调用。

$error_types

就像error_reporting的 ini 设置能够控制错误的显示一样,此参数能够用于屏蔽$error_handler的触发。如果没有该掩码,无论error_reporting是如何设置的,$error_handler都会在每个错误发生时被调用。

返回值

如果之前有定义过错误处理程序,则返回该程序名称的 string;如果是内置的错误处理程序,则返回NULL。如果你指定了一个无效的回调函数,同样会返回NULL。如果之前的错误处理程序是一个类的方法,此函数会返回一个带类和方法名的索引数组(indexed array)。

更新日志

版本说明
7.2.0$errcontext被废弃。使用此参数时会导致E_DEPRECATED提醒。
5.5.0$error_handler可接收NULL
5.2.0错误处理器必须返回FALSE来显示$php_errormsg。

范例

set_error_handler()和trigger_error()进行错误处理

以下示例展示了通过触发错误并以用户自定义的程序来进行内部异常的处理。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)