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调用数据库的存贮过程
Oct 09 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
Oct 13 PHP
php 生成饼图 三维饼图
Sep 28 PHP
PHP最常用的ini函数分析 针对PHP.ini配置文件
Apr 22 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
Jun 02 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
PHP实现设计模式中的抽象工厂模式详解
Oct 11 PHP
PHP实现Soap通讯的方法
Nov 03 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
Jul 01 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 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从memcache读取数据再批量写入mysql的方法
2014/12/29 PHP
PHP制作百度词典查词采集器
2015/01/29 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
2017/03/23 PHP
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
javascript 表单的友好用户体现
2009/01/07 Javascript
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
js中return false(阻止)的用法
2013/08/14 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
JS实现图片平面旋转的方法
2016/03/01 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
2016/07/22 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
2018/12/05 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
vue项目接口域名动态获取操作
2020/08/13 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
[01:08:30]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第一场 2月28日
2021/03/11 DOTA
使用Python写CUDA程序的方法
2017/03/27 Python
Python数据类型之Number数字操作实例详解
2019/05/08 Python
Python PIL库图片灰化处理
2020/04/07 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
俄语专业毕业生推荐信
2013/10/28 职场文书
公司薪酬管理制度
2014/01/31 职场文书
经典促销广告词大全
2014/03/19 职场文书
本科生就业推荐信
2014/05/19 职场文书
运动会拉拉队口号
2014/06/09 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
Python各协议下socket黏包问题原理
2022/04/12 Python
MYSQL常用函数介绍
2022/05/05 MySQL