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 06 PHP
php 从数据库提取二进制图片的处理代码
Sep 09 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
rephactor 优秀的PHP的重构工具
Jun 09 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
laravel 5 实现模板主题功能(续)
Mar 02 PHP
php给图片加文字水印
Jul 31 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
PHP单例模式定义与使用实例详解
Feb 06 PHP
php中Swoole的热更新实现代码实例
Mar 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维护文件系统
2006/10/09 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
探寻PHP脚本不报错的原因
2014/06/12 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
jquery select选中的一个小问题
2009/10/11 Javascript
js tab效果的实现代码
2009/12/26 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
JavaScript中的Number数字类型学习笔记
2016/05/26 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
Vue绑定内联样式问题
2018/10/17 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
详解Python学习之安装pandas
2019/04/16 Python
对Python 简单串口收发GUI界面的实例详解
2019/06/12 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
2020/03/03 Python
教师演讲稿范文
2014/01/08 职场文书
贷款委托书怎么写
2014/08/02 职场文书
自习课吵闹检讨书范文
2014/09/26 职场文书
浅谈Python协程asyncio
2021/06/20 Python
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python