09 错误处理

作者: 海野夏桑 | 来源:发表于2017-12-17 14:54 被阅读11次

    错误分类

    • 语法错误
    • 运行时错误:提示性错误,警告性错误,致命性错误
    • 逻辑错误

    错误分级

    php语言将各种错误作了不同级别的分类,形成了大概有十几个级别,这就是技术层面的错误分级。
    每一个级别的错误,都有一个代号,其实就是系统内部的一个常量罢了。

    • 系统常见错误
      E_ERROR,值为1,对应二进制0000 0000 0000 0001
      E_WARNING,值为2,对应二进制0000 0000 0000 0010
      E_NOTICE,值为4,对应二进制0000 0000 0000 0100
    • 用户可自定义错误
      E_USER_ERROR
      E_USER_WARNING
      E_USER_NOTICE
    • 其他
      E_STRICT //严谨性语法检查错误
      E_ALL //代表所有错误,对应二进制0111 0111 1111 1111

    错误触发

    有时候我们要求程序触发错误,以纠正某些东西。
    trigger_error

    $age = 800;
    if($age > 127 || $age < 0){
        trigger_error("年龄不符合要求", E_USER_ERROR);    //三种用户自定义错误之一
    }else{
        echo "输入年龄正确";
    }
    

    错误报告显示

    就是将错误显示在网页上嘛

    • 是否显示错误报告
      1.在php.ini中,设定display_errors的值,为on或者off
      2.直接在php脚本文件中(在顶部?)使用函数 ini_set() 进行设置
      ini_set("display_errors", 0);    //不显示错误
      ini_set("display_errors", 1);    //显示错误
      
    • 显示哪些级别的错误
      1.在php.ini中,error_reporting中设置
      有3个值,默认值开发阶段值产品阶段值
      根据不同阶段,写上不同的值就可以了。
      error_reporting.PNG
      2.在当前php脚本文件中
      ini_set("error_reporting", E_NOTICE);    //显示一个级别的错误
      ini_set("error_reporting", E_NOTICE | E_WARNING);    //显示两个级别的错误
      

    错误日志记录问题

    • 是否记录
      1.在php.ini中设置,log_errors = on 或 off
      2.在脚本中设置ini_set("log_errors", 1),或者0
    • 记录在哪里
      1.直接使用一个文件名,此时系统会自动在每个文件夹下都建立该文件名,并用于记录该文件夹下所有网页文件的错误
      ini_set("log_errors", "my_error.txt");
      
      2.使用一个特殊文件名字,syslog,此时站点的所有错误都记录到系统的日志文件中,非常少用。控制面板=>管理工具=>时间查看器
        ini_set("log_errors", "syslog");
      

    自定义错误处理器(函数)

    • 设置处理函数的函数名
      set_error_handler("func1");
      
    • 定义该函数。不需要调用该函数,发生错误的话,会自动调用。这个挺好用的
      function func1($errCode, $errMsg, $errFile, $errLine){
          //任意写代码
          echo "发生错误";
          echo "<br/>错误代号为:" . $errCode;
          echo "<br/>错误内容为:" . $errM's'g;
          echo "<br/>错误文件为:" . $errFile;
          echo "<br/>错误行号为:" . $errLine;
      }
      

    相关文章

      网友评论

        本文标题:09 错误处理

        本文链接:https://www.haomeiwen.com/subject/ymmswxtx.html