错误分类
- 语法错误
- 运行时错误:提示性错误,警告性错误,致命性错误
- 逻辑错误
错误分级
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个值,默认值,开发阶段值,产品阶段值。
根据不同阶段,写上不同的值就可以了。
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.直接使用一个文件名,此时系统会自动在每个文件夹下都建立该文件名,并用于记录该文件夹下所有网页文件的错误
2.使用一个特殊文件名字,syslog,此时站点的所有错误都记录到系统的日志文件中,非常少用。控制面板=>管理工具=>时间查看器ini_set("log_errors", "my_error.txt");
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; }