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+javascript液晶时钟
Oct 09 PHP
php 防止单引号,双引号在接受页面转义
Jul 10 PHP
PHP中冒号、endif、endwhile、endfor使用介绍
Apr 28 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
Jul 31 PHP
php fsockopen伪造post与get方法的详解
Jun 14 PHP
PHP图片库imagemagick安装方法
Sep 23 PHP
php下载文件超时时间的设置方法
Oct 06 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 PHP
php图片裁剪函数
Oct 31 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
PHP4实际应用经验篇(1)
2006/10/09 PHP
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
php中的常用魔术方法总结
2013/08/02 PHP
PHP实现单例模式最安全的做法
2014/06/13 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
angularJS开发注意事项
2018/05/26 Javascript
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
js实现3D旋转相册
2020/08/02 Javascript
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
跟老齐学Python之for循环语句
2014/10/02 Python
Python文件去除注释的方法
2015/05/25 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
python matplotlib库绘制散点图例题解析
2019/08/10 Python
python中eval与int的区别浅析
2019/08/11 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
2019/12/19 Python
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
数控专业个人求职信范例
2013/11/29 职场文书
葡萄牙语专业个人求职信
2013/12/10 职场文书
公司董事长职责
2013/12/12 职场文书
秘书专业自荐信范文
2013/12/26 职场文书
会计顶岗实习心得
2014/01/25 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技