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数据库连接时容易出错的特殊符号问题
Sep 01 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
PHP容易忘记的知识点分享
Apr 30 PHP
深入php多态的实现详解
Jun 09 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
Dec 17 PHP
PHP实现自动识别Restful API的返回内容类型
Feb 07 PHP
PHP MySql增删改查的简单实例
Jun 21 PHP
PHP7下协程的实现方法详解
Dec 17 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
May 12 PHP
基于PHP实现用户在线状态检测
Nov 10 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 从数据库提取二进制图片的处理代码
2009/09/09 PHP
浅析PHP原理之变量(Variables inside PHP)
2013/08/09 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
PHP的介绍以及优势详细分析
2019/09/05 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
Extjs入门之动态加载树代码
2010/04/09 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
2016/02/25 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
详解js 创建对象的几种方法
2019/03/08 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
使用python远程操作linux过程解析
2019/12/04 Python
基于python调用psutil模块过程解析
2019/12/20 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
四年的个人工作自我评价
2013/12/10 职场文书
高三高考决心书
2014/03/11 职场文书
作文评语大全
2014/04/23 职场文书
新品发布会策划方案
2014/06/08 职场文书
世界红十字日活动总结
2015/02/10 职场文书
软件项目经理岗位职责
2015/04/01 职场文书