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桌面中心(三) 修改数据库
Mar 11 PHP
php中设置多级目录session的问题
Aug 08 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
Jun 07 PHP
数组与类使用PHP的可变变量名需要的注意的问题
Jun 20 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
PHP变量内存分配问题记录整理
Nov 27 PHP
PHP中的一些常用函数收集
May 26 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 PHP
PHP levenshtein()函数用法讲解
Mar 08 PHP
php数组遍历类与用法示例
May 24 PHP
Laravel5.1框架路由分组用法实例分析
Jan 04 PHP
微信小程序和php的登录实现
Apr 01 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的控制语句
2006/10/09 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
新手入门常用代码集锦
2007/01/11 Javascript
JavaScript 放大镜 移动镜片效果代码
2011/05/09 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
2018/01/02 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
React Router V4使用指南(精讲)
2018/09/17 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
[原创]使用豆瓣提供的国内pypi源
2017/07/02 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
keras.layer.input()用法说明
2020/06/16 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
编程输出如下图形
2013/11/24 面试题
小学英语课后反思
2014/04/26 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
党支部对转正的意见
2015/06/02 职场文书
Python  lambda匿名函数和三元运算符
2022/04/19 Python