首页 > 代码库 > 【php技术】PHP错误类型和屏蔽方法

【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 

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

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