09 错误处理

错误分类

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

错误分级

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 "
    错误代号为:" . $errCode; echo "
    错误内容为:" . $errM's'g; echo "
    错误文件为:" . $errFile; echo "
    错误行号为:" . $errLine; }

你可能感兴趣的:(09 错误处理)