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 相关文章推荐
Smarty模板快速入门
Jan 04 PHP
PHP 验证码的实现代码
Jul 17 PHP
有关PHP性能优化的介绍
Jun 20 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
Jun 20 PHP
phpstorm编辑器乱码问题解决
Dec 01 PHP
WordPress中获取所使用的模板的页面ID的简单方法
Dec 31 PHP
2017年最新PHP经典面试题目汇总(上篇)
Mar 17 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
Laravel5框架添加自定义辅助函数的方法
Aug 01 PHP
PHP中16个高危函数整理
Sep 19 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 PHP
php中使用array_filter()函数过滤数组实例讲解
Mar 03 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
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
php cli 小技巧
2013/06/03 PHP
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
JS实现的简单拖拽功能示例
2017/03/13 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
vue源码学习之Object.defineProperty对象属性监听
2018/05/30 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
socket + select 完成伪并发操作的实例
2017/08/15 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
python中set()函数简介及实例解析
2018/01/09 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
空指针到底是什么
2012/08/07 面试题
大学生求职推荐信
2013/11/27 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
讲座通知范文
2015/04/23 职场文书
小学教研工作总结2015
2015/05/13 职场文书
校运会新闻稿
2015/07/17 职场文书
浅谈Java父子类加载顺序
2021/08/04 Java/Android
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers