PHP错误处理

一、错误的分类

①编译错误:在编译的过程中发生的错误,编码错误是最容易解决的,一般都是代码的书写错误

②执行错误:在执行阶段发生的错误,此种错误一旦发生会根据错误的等级来决定是否中断程序的执行

③逻辑错误:由于程序的逻辑不严谨而产生的错误,此种错误是最难排查的,程序可以正常执行但是最终的结果不是所期望的

二、错误代码:在迫PHP的错误处理机制中,每一种错误都使用了一个错误标识

①系统错误:E_PARSE(编译错误) ,E_NOTICE(提示错误) ,E_ERROR(致命错误),  E_WRRING(警告错误)

 ②自定义错误

③E_All (所有错误,中断程序执行)

<?php
    echo '<pre>';
    print_r(get_defined_constants());
?>

三、错误的触发

①系统错误的触发:由PHP自动检测并触发,程序员无法干涉

<?php
    //gettype()是一个函数,用于获取变量的数据类型,必须传入一个参数
    gettype($v);//传入了一个没有定义的变量
    gettype();//没有传入参数
    get_type();//书写错误
?>

②自定义错误的触发 :trigger_error(msg,type)msg是错误描述信息,type是自定义错误的代码(E_USER_ERROR、E_USER_WARNING、E_USER_NOTICE

<?php
   //设计者认为用户传递的参数不是数组,认为这是一个错误
   function listArr($arr){
       if(!is_array($arr)){
          trigger_error('argument 1 expected array,given int',E_USER_NOTICE);
       }
       for($i=0;$i<count($arr);$i++){
           echo $arr[$i],'<br>';
       }
   }
   //使用者
   $arr=1;
   listArr($arr);
?>

③提示:使用错误处理机制的好处在于可以将错误记录起来,默认记录到Apache的logs/error.log文件中

四、错误的控制设置:在php.ini文件中设置

①可以控制错误是否显示

②可以控制显示哪一类的错误

五、错误的日志文件的记录设置

①没有设置,记录默认在Apache的logs/error.log文件中

②可以控制是否记录错误 log_errors=on/off,在php.ini中设置

③可以自定义设置错误日志的记录位置

  • error_log=syslog  在操作系统中记录(windows系统的错误日志在事件查看器里面)

  • error_log=文件名   记录到自定义的位置

原文地址:https://www.cnblogs.com/EricZLin/p/9161754.html