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开发文件系统实例讲解
Oct 09 PHP
自动把纯文本转换成Web页面的php代码
Aug 27 PHP
PHP读取XML值的代码(推荐)
Jan 01 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
May 31 PHP
PHP获取http请求的头信息实现步骤
Dec 16 PHP
PHP的APC模块实现上传进度条
Oct 27 PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
Mar 11 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
Aug 01 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
Nov 09 PHP
php实现的mysqldb读写分离操作类示例
Feb 07 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
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/06 新手入门
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
动感效果的TAB选项卡jquery 插件
2011/07/09 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
jQuery动态创建html元素的常用方法汇总
2014/09/05 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
js智能获取浏览器版本UA信息的方法
2016/08/08 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
python实现ip查询示例
2014/03/26 Python
Python变量作用范围实例分析
2015/07/07 Python
pandas实现选取特定索引的行
2018/04/20 Python
python读取LMDB中图像的方法
2018/07/02 Python
python验证身份证信息实例代码
2019/05/06 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
python数据化运营的重要意义
2019/11/25 Python
什么是Python包的循环导入
2020/09/08 Python
python 制作简单的音乐播放器
2020/11/25 Python
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
初中生物教学反思
2014/01/10 职场文书
空乘英文求职信
2014/04/13 职场文书
赔偿协议书范本
2014/04/15 职场文书
关于青春的演讲稿
2014/05/05 职场文书
春节联欢会策划方案
2014/05/16 职场文书
应聘教师求职信
2014/07/19 职场文书
闪闪的红星观后感
2015/06/08 职场文书
2016新党章学习心得体会
2016/01/15 职场文书