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 相关文章推荐
fleaphp crud操作之findByField函数的使用方法
Apr 23 PHP
php whois查询API制作方法
Jun 23 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
PHP中的按位与和按位或操作示例
Jan 27 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
CI框架整合smarty步骤详解
May 19 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
Feb 16 PHP
php实现单笔转账到支付宝功能
Oct 09 PHP
php根据地址获取百度地图经纬度的实例方法
Sep 03 PHP
在Laravel中实现使用AJAX动态刷新部分页面
Oct 15 PHP
浅谈laravel aliases别名的原理
Oct 24 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
Apr 04 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+mysql一个名片库程序
2006/10/09 PHP
eclipse php wamp配置教程
2016/06/30 PHP
js获取变量
2006/08/24 Javascript
学习jquery之一
2007/04/27 Javascript
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
KMP算法精解及其Python版的代码示例
2016/06/01 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
python 自动化将markdown文件转成html文件的方法
2016/09/23 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
python isinstance函数用法详解
2020/02/13 Python
python3跳出一个循环的实例操作
2020/08/18 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
英国门把手公司:Door Handle Company
2019/05/12 全球购物
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
十八大报告观后感
2014/01/28 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
冬季施工防火方案
2014/05/17 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
介绍信怎么写
2015/01/30 职场文书
代理词怎么写
2015/05/25 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书
python3.9之你应该知道的新特性详解
2021/04/29 Python
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers