php异常处理捕获错误整理


Posted in PHP onSeptember 23, 2019

PHP的错误报告有三种:

1、错误,语法解析错误,致命错误

2、警告

3、注意

后果:

错误 -> 致命错误,会终止已下程序的执行,语法错误的话,PHP压根就没执行。

警告 -> 他不会终止运行,但会影响结果。

注意 -> 不会终止执行,也不会影响结果。

为了让用户得到更好的体验,我们屏蔽所有错误的输出,是输出,而不是显示。但这样的话,管理员也看不到错误了。页面上不显示错

误,而将错误生成一个日志,提供给管理员查看。

error_reporting(~E_ALL)将所有输出都屏蔽掉了,自然,管理员也看不到了。我不要屏蔽所有输出,我只要屏蔽所有显示

ini_set('display_errors','off');表示屏蔽了所有的页面上错误的显示,但没有屏蔽错误的输出。

ini_set('log_errors','on'); //开启日志写入功能 ini_set('error_log','myerror.log');

//日志的存放位置 ini_set('display_errors','off'); //屏蔽页面显示 error_reporting(E_ALL); //输出所有错误

echo 123; echo $str; //这个会出现一个注意,表示未声明变量 echo date(); //警告,没有传参 echo dae(); 

//致命错误,找不到这个函数 echo 123;

异常:

在 PHP语言里,所有异常都必须自己抛出,而不像 JAVA 之类的语言会自动抛出异常,这也正是 PHP源代码里很少看到异常处理语句的

原因之一。

异常与错误:

异常是指程序运行中不符合预期情况以及与正常流程不同的状况。错误则属于自身问题,是一种非法语法或者环境问题导致的、让编译器

无法通过检查设置无法运行的情况。

由于php最开始是没有异常处理,后来为了进军企业级开发,模仿。PHP一旦遇到非正常代码,大多数情况下,都是直接抛出错误,而不

是异常。

php只有在你throw 一个异常后,才能用try...catch来捕获异常(一般情况下如此,也有部分异常可以自动捕获)。

在php中通常会在以下场景中使用异常:

1、对程序的悲观预测:如果认为自己的代码无法一一处理各种可预见的情况、不可预见的情况。

2、程序的需要和对业务的关注 : 如果对数据的一致性要求很高时,可以用try...catch把异常造成的逻辑中断破坏将到最小,并且经过补救

处理后,不影响业务逻辑的完整性。

3、语言级别的健壮性要求 : 通过精确控制运行时的流程,在程序中断时,有预见的用try...catch缩小可能出错的范围,及时捕获异常并做

出相应的补救。

PHP中的错误:

错误就是会使脚本运行不正常的情况。

在php中主要的错误等级如下:

deprecated: 最低级别的错误,表示"不推荐, 不建议"。例如在php 5中使用了ereg系列的正则函数就会出现。这类错误一般由于使用了不推荐的、过时的函数或语法造成。不影响程序正常运行,但建议修正。

notice: 一般指语法中存在不恰当的地方。如使用变量但是未定义就会报此错误。不影响程序正常流程。

warning: 较高级别的错误,在语法中出现很不恰当的情况才会出现此错误,比如函数参数不匹配。会导致得不到预期的结果,需要修改代码。

fetal error: 致命错误,直接导致程序终止运行。这类错误必须修改。

prase error: 语法解析错误,上面几种都属于运行时错误,此错误在运行前就会抛出。

自定义错误处理程序:

可以使用 set_error_handler() 函数来托管错误处理程序,可自行定制错误的处理流程。

如果要取消托管的话,可以在同一个页面中使用restore_error_handler()来取消托管;如果想要自己抛出一个错误的话,可以使用

trigger_error()函数。

以上就是php异常处理捕获哪些错误的详细内容,感谢大家的学习和对三水点靠木的支持。

PHP 相关文章推荐
用PHP制作静态网站的模板框架(四)
Oct 09 PHP
利用PHP制作简单的内容采集器的原理分析
Oct 01 PHP
超小PHP小马小结(方便查找后门的朋友)
May 05 PHP
php 判断是否是中文/英文/数字示例代码
Sep 30 PHP
PHP Session机制简介及用法
Aug 19 PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 PHP
Thinkphp单字母函数使用指南
May 08 PHP
PHP实现链式操作的原理详解
Sep 16 PHP
Zend Framework数据库操作方法实例总结
Dec 11 PHP
PHP数组内存利用率低和弱类型详细解读
Aug 10 PHP
PHP多进程编程之僵尸进程问题的理解
Oct 15 PHP
PHP设计模式之工厂模式定义与用法详解
Apr 03 PHP
ThinkPHP 5.x远程命令执行漏洞复现
Sep 23 #PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
Sep 23 #PHP
redis+php实现微博(三)微博列表功能详解
Sep 23 #PHP
redis+php实现微博(二)发布与关注功能详解
Sep 23 #PHP
redis+php实现微博(一)注册与登录功能详解
Sep 23 #PHP
php日志函数error_log用法实例分析
Sep 23 #PHP
php扩展开发入门demo示例
Sep 23 #PHP
You might like
Discuz 模板引擎的封装类代码
2008/07/18 PHP
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
PHP正则验证Email的方法
2015/06/15 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
克隆javascript对象的三个方法小结
2011/01/12 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
javascript生成随机颜色示例代码
2014/05/05 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
微信小程序 合法域名校验出错详解及解决办法
2017/03/09 Javascript
Angularjs 实现移动端在线测评效果(推荐)
2017/04/05 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
如何通过python计算圆周率PI
2020/11/11 Python
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
年度考核自我评价
2014/01/25 职场文书
幼儿园元旦家长感言
2014/02/27 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
政风行风评议心得体会
2014/10/21 职场文书
CSS SandBox应用场景及常见问题
2022/06/25 HTML / CSS