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 mkdir()定义和用法
Jan 14 PHP
小文件php+SQLite存储方案
Sep 04 PHP
解析php二分法查找数组是否包含某一元素
May 23 PHP
php旋转图片90度的方法
Nov 07 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
php支付宝接口用法分析
Jan 04 PHP
Yii rules常用规则示例
Mar 15 PHP
php模板引擎技术简单实现
Mar 15 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 PHP
Laravel 自动生成验证的实例讲解:login / logout
Oct 14 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 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/12/28 PHP
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
JavaScript 在各个浏览器中执行的耐性
2009/04/06 Javascript
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
JS面向对象编程 for Cookie
2010/09/19 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
2015/08/31 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
python strip()函数 介绍
2013/05/24 Python
python检测远程udp端口是否打开的方法
2015/03/14 Python
Python使用QRCode模块生成二维码实例详解
2017/06/14 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
关于box-sizing的全面理解
2016/07/28 HTML / CSS
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
2013年大学生的自我鉴定
2013/10/24 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
投诉信范文
2015/07/02 职场文书
python实现求纯色彩图像的边框
2021/04/08 Python
浅谈Python中对象是如何被调用的
2022/04/06 Python
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL