大家好,本次苏南大叔给大家带来的是一个有关php错误处理的教程,说的是php的异常处理函数set_exception_handler。在开始本文的内容之前,建议大家先复习一下这篇文章:https://newsn.net/say/php-ini-error.html ,看看最传统的php的错误处理方案,然后再回头看看本文中的内容。也许会有更深刻的认识。

前言

本文的内容适合在php脚本内容中,控制错误输出。php的各种框架中,都会出现这个函数set_exception_handler

在php语言自身的概念内,error和exception是两个概念,而在大家的意识里面,这两个可能是同一个概念,都是“报错”。这点可能需要大家先弄弄清。而php5和php7对于set_exception_handler函数的解释也是不同的,具体的区别在哪里呢?请查看下面的内容。

php5中的set_exception_handler

php5中,set_exception_handler函数,

  • 可以处理throw的exception,显示出一个错误后,自动停止响应。
  • 但是无法处理任何的error,归于系统处理,并会继续执行。
  • php5中没有error这个类,无法throw一个Error,但是可以throw一个Exception

苏南大叔:php错误处理之set_exception_handler - php5_exception
php错误处理之set_exception_handler(图13-8)

苏南大叔:php错误处理之set_exception_handler - php5_exception2
php错误处理之set_exception_handler(图13-9)

苏南大叔:php错误处理之set_exception_handler - php5_trigger
php错误处理之set_exception_handler(图13-10)

苏南大叔:php错误处理之set_exception_handler - php5_not_support_error
php错误处理之set_exception_handler(图13-11)

苏南大叔:php错误处理之set_exception_handler - php5_error_sorry
php错误处理之set_exception_handler(图13-12)

总结

set_exception_handler这个函数,在php5和php7中,表现出较大差别。触发错误的方式不同,在php中也可能表现出不同的形式。php7中的set_exception_handler,可以捕获error和exception,php5中的set_exception_handler,只可以捕获exception。

无法捕获的错误和异常,将进入php系统处理。如果你设置了php.ini中的错误处理方式,那么你将可以在你可以期待的地方,看到这些没有被捕获的错误的描述信息。

苏南大叔:php错误处理之set_exception_handler - 99
php错误处理之set_exception_handler(图13-13)

总体来说,除了trigger_error之外,错误都是可以捕获的。但是对于error,在php5中,是通过另外的函数set_error_handler进行捕获的。在接下来的文章中,苏南大叔将会和大家探讨set_error_handler的使用。

更多苏南大叔的php相关的经验总结,请点击这里查看:https://newsn.net/tag/php/

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

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

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

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

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