zoukankan      html  css  js  c++  java
  • 查错秘籍—PHP大法

                                                             查错秘籍PHP大法

                   ——与葵花宝典齐名

        偶突然发现自己老了,酱紫很难和大家沟通滴,所以特别翻译成大家能听懂的语言和大家交流,酱紫大家就都开心了。(总结只是俺自己闲暇之余的粗陋之作,错误之处,欢迎大家指正,求大神不要因为我写错了什么打我)。

    ——————————————我是分割线,请不要看我—————————————

    错误大致分两类:第一种是你能看到的提示性错误,一般写在了页面上,比如浏览器上,sublime上等等;还有就是你看不到的错误,这类型没什么提示,完全是按着以往经验来查。

    ——————————————说了是分割线,你还看我—————————————

    1.有提示错误的时候:

     童鞋们,有时候会碰上一些错误提示,但不知道如何解决该怎么办?

    忠心的给出一些建议:

        当浏览器报错时,卸载浏览器;sublime报错时,卸载sublimeappache报错重装appachewindows出错了简单,重装windows。电脑坏了,我给你找把锤子。以上就是我的经验总结,感谢大家百忙之中观看……

    ——————————————请看我言归正传———————————————

    好吧,言归正传!

    a.网页提示错误:

      Syntax error

       语法错误。若果页面报错开头是这两个单词的话,很有可能是你自己在编写程序时语法错误。

      解决方法:

      第一步:看它末尾提示,比如是”line 11”,则表示是第11行或者第10行出错了。

      第二步:

           你敢保证,自己没有丢单词么?

           你敢保证,自己没有写错了什么?比如fuck”中少了”u”;

           你敢保证,上一行或者本行的分号不是中文格式么?或者是没有丢分号么?

           你敢保证,该加双引号的变量都加上了么?

           ……

    Fetal error

    致命错误。

    Fetal error:引起这种错误的可能有两种。

    第一种:在一个复杂的程序中, 偶然出现内存不足就会导致fatal error

    第二种: fatal error 出在MySQL类中fetch的时候.

    解决方案:

       PHP异常处理中 可以通过set_error_handler来捕获. 但是却只能捕获

     NOTICE/WARNING级别的错误, 对于E_ERROR是无能为力的。register_shutdown_function 能解决set_error_handler的不足。通过此函数注册好程序结束回调函数, 就可以捕获平时捕获不到的错误了. 再通过 error_get_last 对错误进行判断. 就容易找出难以定位的问题了.

    例子:

    <?php

    function shutdown_function()  

    {  

        $e = error_get_last();    

        print_r($e);  

    }

    register_shutdown_function('shutdown_function');  

    ?>

     Notice

            错误:

             PHP Notice:  Undefined variable  未定义变量

             PHP Notice:  Undefined index 未定义索引

      看看吧,这些变量你都没有定义就在使用了。赶紧回去加点什么或哪里还需要再改改。

      如果还是不行的话:

       解决方案:

          秘法一:在报错行之前加@,可以屏蔽某一行错误。

          秘法二:在PHP页面中加入如下代码,可以屏蔽一大堆notice(显示所有错误不显示注意),你懂得。

                 error_reporting(E_ALL || ~E_NOTICE);

                缺点是:若果页面中出现大量notice,其结果是影响php程序的性能。

    Warning

      警告。

    解决办法同上。

          法一:好吧,加@”。

          法二:error_reporting(E_ALL || ~E_WARNING);

    提示:大家把”notice””warning”中的方法忽略了吧,毕竟我们就是干这个的,职业道德不允许我们一错再错。除非我们是要先测试性能。

    Parser error:

    JS中的错误。可能是结构不对。

    b.Sublime报错:这个相对简单。不要问我什么错误,看左下角对应查单词。还有.”报错。

      不过还有点注意的是,你的错误不一定是错在本行。

      具体应该有几大错误类:

    1)可能是本行错误,比如语法错误(丢了字母,变量不存在神马的)。

    2)可能是上一行的错误,比如你丢了个分号等等。

    3)可能是结构性错误,比如你在使用if(){}else{}语句时大括号没丢吗?抑或是大括号   包含的内容范围包对了吗?

    c.Edditplus

    如果你用的是EdditPlus编辑器,出错了怎么办?

    小编推荐:您把代码Ctrl+C粘贴到Sublime中,让它帮我们报错,让我们先喽一眼,是不是很神奇。愚蠢的人类在我面前颤抖吧!

    d.Cmd提示错误:

      有些人,自己的浏览器报错了语法错误了,却非要上cmd来找,我替cmd伤心呐,因为这无异于要找个男孩子帮你传宗接代!

      Cmd报错在我们目前所学的最多的地方是MySQL(你确定非要到火星上找你的 男/女朋友 吗?)

    e.Appache错误:

      Appache无法重启:语法错误,可能是虚拟主机Virtual-host中设置错误。

      dos(也就是cmd)界面中输入Httpd -t 对应查找。

    如果不是虚拟主机配置错误的话,可能需要重启Appache;如果重启还是失败的话,就重启电脑(这一招有时候蛮灵的)。

    2.无提示错误

    这种时候,像我们这种新手就开始迷茫了,错误不知道如何解决?

    不要怕,我来帮你分析。

    第一:你没有写错,不要再找单词错误了。

    第二:你开始找以下几种错误了。

    首先,可能是比如ifelse…语句{}这类型带括号的括错地方了。

    其次,检查是否有语句使用错误,比如某个变量放错了地方,某个变量根本就不用写,或某个函数你调用了吗?还有如echo”这样的输出语句你输出的变量可能是你已声明的其它变量……等等。

    还有:在php中也可以简单的使用echo语句和exit()函数进行试探性的查找。走到那一块不运行了,就在那里查找对应的错误。

    JS中常用document.write()alert()方式来进行对应查找。

     

  • 相关阅读:
    jupyter notebook 不能画图
    tensorflow中reduce_xxx函数
    tensorflow中用正太分布随机初始化网络权重参数 ---tf.random_normal
    将dataframe变量转为tf.constant变量
    dataframe to tensor
    Python-Pandas 如何shuffle(打乱)数据?
    TensorFlow实战(1)
    基本概念——张量、会话、计算图
    天梯赛 L3-003. 社交集群
    蓝桥杯 算法提高 P0101
  • 原文地址:https://www.cnblogs.com/yumingzhao/p/8629002.html
Copyright © 2011-2022 走看看