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下使用SMTP发邮件的代码
Jan 10 PHP
PHP 事务处理数据实现代码
May 13 PHP
php XMLWriter类的简单示例代码(RSS输出)
Sep 30 PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
浅析THINKPHP的addAll支持的最大数据量
Feb 03 PHP
php使用array_search函数实现数组查找的方法
Jun 12 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
May 09 PHP
YII视图整合kindeditor扩展的方法
Jul 13 PHP
php 常用的系统函数
Feb 07 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 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
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
php后台程序与Javascript的两种交互方式
2009/10/25 PHP
php购物车实现代码
2011/10/10 PHP
php中namespace及use用法分析
2016/12/06 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
2014/06/27 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python实现新浪博客备份的方法
2016/04/27 Python
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
利用Python获取操作系统信息实例
2016/09/02 Python
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
Python实现曲线点抽稀算法的示例
2017/10/12 Python
django celery redis使用具体实践
2019/04/08 Python
利用python求积分的实例
2019/07/03 Python
python with语句的原理与用法详解
2020/03/30 Python
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
实习自我鉴定模板
2013/09/28 职场文书
上课看小说检讨书
2014/02/22 职场文书
三分钟演讲稿事例
2014/03/03 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
MySQL分区以及建索引的方法总结
2022/04/13 MySQL