书接上回,上一篇文章里面,苏南大叔和大家探讨了set_exception_handler在php5和php7下面的不同表现。在本篇文章中,苏南大叔将给大家展示另外一个函数set_error_handler的基本用法。

代码demo展示

本文中的代码,和上一篇文章基本类似,稍有不同。

echo "PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
function error_handler($errno, $errstr, $errfile, $errline) {
    echo "<b>出错了,错误如下:</b><br/><br/>";
    echo "代码: $errno <br />\n";
    echo "信息: $errstr <br />\n";
    echo "文件: $errfile <br />\n";
    echo "行号: $errline <br />\n";
    return true;
    //return false;
}
set_error_handler("error_handler");
//throw new Exception('这是个自定义异常exception');
//throw new Exception('这是个带编号的自定义异常exception',1);
//trigger_error("这是个无法捕捉的自定义的错误error");
//throw new Error('这是个带编号的自定义的错误error',2);
this_is_an_on_purpose_error();
echo "恭喜,没有错误\n";

苏南大叔:php错误处理之set_error_handler - 00_code
php错误处理之set_error_handler (图9-1)

set_error_handler的函数中的的注意事项。

  • 并不会像set_exception_handler一样,主动exit。错误处理程序处理后,除非主动exit。否则程序将会继续执行。
  • set_error_handler对应的错误处理函数中的return,是非常值得大家注意的地方。return false,将会继续转至系统错误程序处理之中,而return true则直接进入下一条php语句,而不是会经过一下系统的错误处理。

苏南大叔:php错误处理之set_error_handler - php7_trigger_error
php错误处理之set_error_handler (图9-8)

苏南大叔:php错误处理之set_error_handler - php7_trigger_error2
php错误处理之set_error_handler (图9-9)

结语

php的错误处理机制,是我们调试各种php框架的关键因素。所以搞清楚这些背后的原理,还是非常有必要的。欢迎大家继续关注苏南大叔的php相关经验文章。点击这里查看:https://newsn.net/tag/php/

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   php    exception

本站的忠实读者小伙伴,正在阅读下面这些文章: