一、错误的分类
①编译错误:在编译的过程中发生的错误,编码错误是最容易解决的,一般都是代码的书写错误
②执行错误:在执行阶段发生的错误,此种错误一旦发生会根据错误的等级来决定是否中断程序的执行
③逻辑错误:由于程序的逻辑不严谨而产生的错误,此种错误是最难排查的,程序可以正常执行但是最终的结果不是所期望的
二、错误代码:在迫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=文件名 记录到自定义的位置