PHP 8改变了大多数错误的报告方式,现在大多数错误被作为Error异常抛出。
这种Error异常可以像普通异常一样被try/catch块所捕获。如果没有匹配的try/catch块,则调用异常处理函数(set_exception_handler())进行处理。如果尚未注册异常处理函数,则按照传统方式处理:被报告为一个致命错误(Fatal Error)。
Error类并不是从Exception类扩展出来的,所以使用catch (Exception $e) { … }这样的代码是捕获不到Error的。用户可以使用catch (Error $e) { … }这样的代码,或者通过注册异常处理函数(set_exception_handler())来捕获Error。
【例9.11】
运行结果如图9-14所示。