通过哪一个函数,可以把错误转换为异常处理

时间:2020-05-01

通过哪一个函数,可以把错误转换为异常处理

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

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-controloperator 前缀的语句发生错误时,这个值会是 0。

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

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

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

set_error_handler(function ($errno, $errstr, $errfile, $errline) {
    var_dump($errno, $errstr, $errfile, $errline);
});

trigger_error('发生错误了');