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边学边教》(02.Apache+PHP环境配置――上篇)
Dec 13 PHP
php简单静态页生成过程
Mar 27 PHP
php中显示数组与对象的实现代码
Apr 18 PHP
使用PHP实现二分查找算法代码分享
Jun 24 PHP
php ios推送(代码)
Jul 01 PHP
PHP四种基本排序算法示例
Apr 09 PHP
php随机显示指定文件夹下图片的方法
Jul 13 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
Feb 04 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
PHP用PDO如何封装简单易用的DB类详解
Jul 30 PHP
php实现小程序支付完整版
Oct 09 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
May 25 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
PDO的安全处理与事物处理方法
2016/10/31 PHP
php unlink()函数使用教程
2018/07/12 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
js实现简单的可切换选项卡效果
2015/04/10 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
浅谈JS原生Ajax,GET和POST
2016/06/08 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
js实现简单模态框实例
2018/11/16 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
python实现Windows电脑定时关机
2018/06/20 Python
解决python "No module named pip" 的问题
2018/10/13 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
新手学python应该下哪个版本
2020/06/11 Python
Pycharm中如何关掉python console
2020/10/27 Python
诉讼代理人授权委托书
2014/04/08 职场文书
对教师的评语
2014/04/28 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
后勤工作个人总结
2015/02/28 职场文书
自主招生自荐信格式
2015/03/04 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python
Go语言基础知识点介绍
2021/07/04 Golang
Python机器学习之决策树和随机森林
2021/07/15 Javascript
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers