PHP7 错误处理机制修改


Posted in PHP onMarch 09, 2021

一、现在有两个异常类: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错误的级别调整了。


PHP 7 错误处理

PHP 7 改变了大多数错误的报告方式。不同于 PHP 5 的传统错误报告机制,现在大多数错误被作为 Error 异常抛出。

这种 Error 异常可以像普通异常一样被 try / catch 块所捕获。如果没有匹配的 try / catch 块, 则调用异常处理函数(由 set_exception_handler() 注册)进行处理。 如果尚未注册异常处理函数,则按照传统方式处理:被报告为一个致命错误(Fatal Error)。

Error 类并不是从 Exception 类 扩展出来的,所以用 catch (Exception $e) { ... } 这样的代码是捕获不 到 Error 的。你可以用 catch (Error $e) { ... } 这样的代码,或者通过注册异常处理函数( set_exception_handler())来捕获 Error。

 

Error 异常层次结构

1.Error      

  • ArithmeticError      

  • AssertionError      

  • DivisionByZeroError      

  • ParseError      

  • TypeError     

2.Exception

PHP 相关文章推荐
PHP中用header图片地址 简单隐藏图片源地址
Apr 09 PHP
php imagecreatetruecolor 创建高清和透明图片代码小结
May 15 PHP
解析php安全性问题中的:Null 字符问题
Jun 21 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
Jun 24 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
Jul 02 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
教你php如何实现验证码
Jan 20 PHP
CI框架表单验证实例详解
Nov 21 PHP
php根据年月获取当月天数及日期数组的方法
Nov 30 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
PHP7 字符串处理机制修改
Mar 09 #PHP
PHP7 整型处理机制修改
Mar 09 #PHP
PHP7 参数处理机制修改
Mar 09 #PHP
PHP7 foreach() 函数修改
Mar 09 #PHP
PHP7 list() 函数修改
Mar 09 #PHP
PHP7变量处理机制修改
Mar 09 #PHP
PHP7新特性
Mar 09 #PHP
You might like
PHP计数器的实现代码
2013/06/08 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
PHP使用Mysql事务实例解析
2014/09/08 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
CodeIgniter 完美解决URL含有中文字符串
2016/05/13 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
非常不错的一个javascript 类
2006/11/07 Javascript
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
jquery延迟对象解析
2016/10/26 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
Node 升级到最新稳定版的方法分享
2018/05/17 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
Python判断直线和矩形是否相交的方法
2015/07/14 Python
python学生管理系统代码实现
2020/04/05 Python
有关Python的22个编程技巧
2018/08/29 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
解决Django连接db遇到的问题
2019/08/29 Python
详解python opencv、scikit-image和PIL图像处理库比较
2019/12/26 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
what is the difference between ext2 and ext3
2015/08/25 面试题
市场开发与营销专业求职信
2013/12/31 职场文书
旅游专业职业生涯规划范文
2014/01/13 职场文书
小学防溺水制度
2014/01/29 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
田径运动会通讯稿
2015/07/18 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python