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 相关文章推荐
第六节 访问属性和方法 [6]
Oct 09 PHP
php 来访国内外IP判断代码并实现页面跳转
Dec 18 PHP
在命令行下运行PHP脚本[带参数]的方法
Jan 22 PHP
php 数组的指针操作实现代码
Feb 08 PHP
php设计模式 Proxy (代理模式)
Jun 26 PHP
destoon调用企业会员公司形象图片的实现方法
Aug 21 PHP
PHP向浏览器输出内容的4个函数总结
Nov 17 PHP
php猴子选大王问题解决方法
May 12 PHP
php搜索文件程序分享
Oct 30 PHP
利用php操作memcache缓存的基础方法示例
Aug 02 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
PHP 实现重载
Mar 09 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模板类代码
2008/09/07 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
php之可变变量的实例详解
2017/09/12 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
2017/10/11 PHP
给Function做的OOP扩展
2009/05/07 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
jQuery拖拽 & 弹出层 介绍与示例
2013/12/27 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
JavaScript和TypeScript中的void的具体使用
2019/09/12 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
Django开发中的日志输出的方法
2018/07/02 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Python 控制终端输出文字的实例
2019/07/12 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
python__new__内置静态方法使用解析
2020/01/07 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
python操作链表的示例代码
2020/09/27 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
俄罗斯园林植物网上商店:Garshinka
2020/07/16 全球购物
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
茶叶店创业计划书范文
2014/01/19 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
gojs实现蚂蚁线动画效果
2022/02/18 Javascript
Python实现科学占卜 让视频自动打码
2022/04/09 Python
Python使用pyecharts控件绘制图表
2022/06/05 Python