zoukankan      html  css  js  c++  java
  • 【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:weberror.php on line 3

    2. E_PARSE

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

    如:没有设置变量值

    $a = ;

    Parse error: syntax error, unexpected ';' in D:weberror.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:weberror.php on line 3

    Warning: include(): Failed opening 'xxx.php' for inclusion (include_path='.;C:phppear') in D:weberror.php on line 3

    继续运行

    4. E_NOTICE

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

    如:

    echo $c;

    Notice: Undefined variable: c in D:weberror.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:weberror.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 

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

  • 相关阅读:
    冲突域和广播域的区分
    internet 的一词多义
    大神洗礼第四讲——函数相关及编程技巧
    旋转字符串算法由浅入深
    一个交换程序的通用版本
    想起一些事情,都很遥远
    [转载]创业感想
    [转载]javascript小技巧
    [转载]在Asp.Net 2.0中应用DataFormatString
    [转载]C#的String.Format格式化举例
  • 原文地址:https://www.cnblogs.com/xiaogou/p/6688239.html
Copyright © 2011-2022 走看看