当前位置: 首页 > news >正文

【php技术】PHP错误类型和屏蔽方法

【php技术】PHP错误类型和屏蔽方法

作者:简单生活 来源:本站 发表时间:2016-10-30 08:58:12 查看:7 次

一、php的错误类型

首先,我们需要知道的是怎么才能显示我们的错误:

通过在代码中添加两行代码:

1.显示除E_STRICT外的所有错误和警告信息

error_reporting(E_ALL);

2. 是否把错误展示在输出上

ini_set('display_errors', 'On');

有了以上两部操作,我们就可以把我们的错误信息展示在页面上了。

第二,我们需要知道php有哪些错误类型:

根据中文官方文档,共有16个错误级别:

地址:http://php.net/manual/zh/errorfunc.constants.php

在文档中已经非常清楚的描述错误的级别和出错的原因,这里我们选择几个比较有代表性的错误,给大家详细说明:

1. E_ERROR

致命的运行时错误。这类错误一般是不可恢复的情况,例如内存分配导致的问题。后果是导致脚本终止不再继续运行。页面上通常会显示Fatal Error,出现这种错误的原因可能为:访问不存在此函数代码、服务器执行时间超时、调用了不存在的类代码等等

如:类不存在

$goodsModel = new Goods();

Fatal error: Class 'Goods' not found in D:\web\error.php on line 3

2. E_PARSE

编译时语法解析错误。解析错误仅仅由分析器产生。这种语法错误采用专业的IDE就可以很好的避免,诸如phpstorm,zend studio等等。

如:没有设置变量值

$a = ;

Parse error: syntax error, unexpected ';' in D:\web\error.php on line 3

3. E_WARNING

运行时警告 (非致命错误)。仅给出提示信息,但是脚本不会终止运行。

如:

include 'xxx.php';

echo '继续运行';

Warning: include(xxx.php): failed to open stream: No such file or directory in D:\web\error.php on line 3

Warning: include(): Failed opening 'xxx.php' for inclusion (include_path='.;C:\php\pear') in D:\web\error.php on line 3

继续运行

4. E_NOTICE

运行时通知。表示脚本遇到可能会表现为错误的情况,但是在可以正常运行的脚本里面也可能会有类似的通知。这种错误的级别稍微低一些。

如:

echo $c;

Notice: Undefined variable: c in D:\web\error.php on line 8

5. E_DEPRECATED

运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。

如:

当我们使用PHP5.5(或更高)时,如果使用mysql_connect(()函数连接数据库时就会报错,建议使用更新的MySQL连接方式

$conn = mysql_connect('localhost','root','admin');

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in D:\web\error.php on line 4

还有很多的错误类型,大家可以通过文档了解更多。

二、屏蔽方法

1、屏蔽某个函数错误信息

使用@符号,可以屏蔽某个函数错误信息,这是就不会报错。

如:

$conn = @mysql_connect('localhost','root',admin);

2、屏蔽某个类型的错误

2.1 在代码中屏蔽

语法:error_reporting(E_ALL ^ 错误常量) 或 error_reporting(E_ALL & ~错误常量)

如:

error_reporting(E_ALL ^ E_DEPRECATED);

$conn = mysql_connect('localhost','root','admin');

2.2 在配置文件php.ini中屏蔽

语法:error_reporting = E_ALL & ~错误常量

如:

error_reporting = E_ALL & ~ E_DEPRECATED & ~ E_NOTICE

3、屏蔽所有错误

方式:

在代码中error_reporting(0) 或者 修改配置文件error_reporting = 0 

但是我们在工作中一般建议不关闭所有报错,而是通过日志的方式记录所有错误信息,不在页面中展示错误信息。之后我会给大家介绍怎么捕捉错误并记录日志。

转载于:https://www.cnblogs.com/xiaogou/p/6688239.html

相关文章:

  • JAVA进程占用CPU分析
  • Android - Activity生命周期
  • maven scope使用和理解
  • JavaScript数组
  • freemarker自定义标签
  • [转]使用JQuery读取XML文件数据
  • android安装
  • jQuery 读xml并search
  • IO模型介绍 以及同步异步阻塞非阻塞的区别
  • IDEA的查询引用、调用关系图的功能(转)
  • 【不抱怨21天】第一天 - The First Day
  • 201521123054《Java程序设计》第8周学习总结
  • DataTable与Xml的相互转化
  • 【转】C#三大特性之 封装、继承、多态
  • POJ3664
  • 2017 年终总结 —— 在路上
  • canvas绘制圆角头像
  • gcc介绍及安装
  • Git的一些常用操作
  • JS基础之数据类型、对象、原型、原型链、继承
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Vue.js-Day01
  • windows下mongoDB的环境配置
  • 安装python包到指定虚拟环境
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 前端相关框架总和
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 如何优雅地使用 Sublime Text
  • 使用parted解决大于2T的磁盘分区
  • 事件委托的小应用
  • 项目实战-Api的解决方案
  • 异常机制详解
  • #Linux(帮助手册)
  • #stm32整理(一)flash读写
  • (第二周)效能测试
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (图)IntelliTrace Tools 跟踪云端程序
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • ***监测系统的构建(chkrootkit )
  • .FileZilla的使用和主动模式被动模式介绍
  • .net core 6 集成和使用 mongodb
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET Core引入性能分析引导优化
  • .net mvc 获取url中controller和action
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET 设计一套高性能的弱事件机制
  • .NET 事件模型教程(二)
  • .NET开发不可不知、不可不用的辅助类(一)
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • @Import注解详解
  • @property python知乎_Python3基础之:property
  • @RequestBody与@ModelAttribute