错误的级别
1. notice:提示2. warning:警告3. error:致命错误
- 1
- 2
- 3
- 4
- 5
注:notice和warning报错后继续执行,error报错后停止
错误的提示方法
方法一:显示在浏览器上
方法二:记录在日志中执行
错误处理有关的配置(在php.ini中)
1. error_reporting = E_ALL:报告所有的错误
2. display_errors = On:将错误显示在浏览器上
3. log_errors = On:将错误记录在日志中
4. error_log=’地址’:错误日志保存的地址
- 1
- 2
- 3
- 4
项目开发的两个模式:
开发模式:错误显示在浏览器上,不要记录在日志中
运行模式:错误不显示在浏览器上,记录是日志中
例题:
<?php
$debug=false; //true:开发模式 false:运行模式
ini_set('error_reporting',E_ALL); //所有的错误有报告
if($debug){ini_set('display_errors','on'); //错误显示是浏览器上ini_set('log_errors','off'); //错误不显示在日志中
}else{ini_set('display_errors','off');ini_set('log_errors','on');ini_set('error_log','./err.log'); //错误日志保存的地址
}//测试
echo $num;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
自定义错误处理
通过trigger_error产生一个用户级别的 error/warning/notice 信息
注意:用户级别的错误的常量名中一定要带有USER。
<?php
$age=100;
if($age>80){//trigger_error('年龄不能超过80岁'); //默认触发了notice级别的错误//trigger_error('年龄不能超过80岁',E_USER_NOTICE); //触发notice级别的错误//trigger_error('年龄不能超过80岁',E_USER_WARNING);trigger_error('年龄不能超过80岁',E_USER_ERROR); //错误用户error错误
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
注册错误处理函数,只要有错误就会自动调用错误处理函数:
定义错误处理函数:
function error() {echo '这是自定义错误处理';
}
set_error_handler('error'); //注册错误处理函数,只要有错误就会自动的调用错误处理函数
echo $num;
- 1
- 2
- 3
- 4
- 5
自定义错误处理函数
/**
*自定义错误处理函数
*@param $errno int 错误类别
*@param $errstr string 错误信息
*@param $errfile string 文件地址
*@param $errline int 错误行号
*/
function error($errno,$errstr,$errfile,$errline) {switch($errno){case E_NOTICE:case E_USER_NOTICE:echo '记录在日志中,上班后在处理<br>';break;case E_WARNING:case E_USER_WARNING: echo '给管理员发邮件<br>';break;case E_ERROR:case E_USER_ERROR:echo '给管理员打电话<br>';break;}echo "错误信息:{$errstr}<br>";echo "错误文件:{$errfile}<br>";echo "错误行号:{$errline}<br>";
}
set_error_handler('error');
echo $num;//运行结果
记录在日志中,上班后在处理
错误信息:Undefined variable: num
错误文件:F:\wamp\www\4-demo.php
错误行号:50