一、现在有两个异常类:Exception and Error.

 

PHP7现在有两个异常类,Exception and Error。

这两个类都实现了一个新的接口:Throwable

在您的异常处理代码中,类型暗示可能需要调整下。

 

二、一些致命错误和可恢复致命错误改为抛出Error对象

 

有一些致命错误和可恢复致命错误现在改为报出Error对象。

Error对象是和Exception独立的,它们无法被常规的try/catch扑获。编者按:需要注册错误处理函数,请参考下面的RFC。

对于这些已经转为异常的可恢复致命错误,已经无法通过error handler静默的忽略掉。尤其是无法忽略类型暗示错误。

 

 

三、语法错误会抛出一个ParseError对象

 

语法错误会抛出一个ParseError对象,该对象继承自Error对象。

之前处理eval()的时候,对于潜在可能错误的代码除了检查返回值或者error_get_last()之外,还应该捕获ParseError对象。

 

四、内部对象的构造方法如果失败的时候总会抛出异常

 

内部对象的构造方法如果失败的时候总会报出异常。

之前的有一些构造方法会返回NULL或者一个无法使用的对象。

 

五、一些E_STRICT错误的级别调整了。

 

六、参考资料

https://wiki.php.net/rfc/engine_exceptions_for_php7

https://wiki.php.net/rfc/throwable-interface

https://wiki.php.net/rfc/internal_constructor_behaviour

https://wiki.php.net/rfc/reclassify_e_strict