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 相关文章推荐
打造计数器DIY三步曲(下)
Oct 09 PHP
PHP 金额数字转换成英文
May 06 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 PHP
ThinkPHP实例化模型的四种方法概述
Aug 22 PHP
主流PHP框架的优缺点对比分析
Dec 25 PHP
PHP中的常见魔术方法功能作用及用法实例
Jul 01 PHP
php 防止表单重复提交两种实现方法
Nov 03 PHP
Yii核心验证器api详解
Nov 23 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
CI框架实现创建自定义类库的方法
Dec 25 PHP
PHP isset()及empty()用法区别详解
Aug 29 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/13 PHP
详解PHP中的PDO类
2015/07/06 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
浅谈javascript六种数据类型以及特殊注意点
2013/12/20 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
详谈jQuery.load()和Jsp的include的区别
2017/04/12 jQuery
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
基于 Bootstrap Datetimepicker 联动
2017/08/03 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
Python 多线程实例详解
2017/03/25 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
Python使用xpath实现图片爬取
2020/09/16 Python
汽车检测与维修专业求职信
2013/10/30 职场文书
教师政风行风自查自纠报告
2014/10/21 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
党员个人总结自评
2015/02/14 职场文书
第一节英语课开场白
2015/06/01 职场文书
指导教师推荐意见
2015/06/05 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS