PHP-错误处理

  • 2020 年 3 月 26 日
  • 笔记

1.5 错误处理

1.5.1 错误的级别

  1. notice:提示
  2. warning:警告
  3. error:致命错误

notice和warning报错后继续执行,error报错后停止执行

1.5.2 错误的提示方法

方法一:显示在浏览器上

方法二:记录在日志中

1.5.3 与错误处理有关的配置

在php.ini中

1. error_reporting = E_ALL:报告所有的错误  2. display_errors = On:将错误显示在浏览器上  3. log_errors = On:将错误记录在日志中  4. error_log=’地址’:错误日志保存的地址

在项目开发过程中有两个模式,开发模式,运行模式

开发模式:错误显示在浏览器上,不要记录在日志中  运行模式:错误不显示在浏览器上,记录是日志中

例题

<?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;

提示:ini_set()设置PHP的配置参数

1.5.4 自定义错误处理(了解)

通过trigger_error产生一个用户级别的 error/warning/notice 信息

<?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错误  }

注意:用户级别的错误的常量名中一定要带有USER。

定义错误处理函数

function error() {  	echo '这是自定义错误处理';  }  set_error_handler('error');	//注册错误处理函数,只要有错误就会自动的调用错误处理函数  echo $num;

运行结果

处理处理函数还可以带有参数

/**  *自定义错误处理函数  *@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:wampwww4-demo.php  错误行号:50