PHP学习笔记(七)

错误处理

错误分类
1)语法错误:Parse error
2)运行错误:runtime error
3)逻辑错误:代码正常运行,但得不到正常结果

错误代号
1)系统错误:
E_PARSE:编译错误
E_ERROR:致命错误 fatal error
E_WARNING:警告错误 warning error
E_NOTTICE:通知错误 notice
2)用户错误:
E_USER_ERROR
E_USER_WARNING
E_USER_NOTTICE
3)其他:
E_ALL
所有E开头的错误常量(代号)都是一个字节,然后一种错误占据一个对应的位,如果想进行一些错误的控制,可以使用位运算进行操作

错误触发
1)程序运行时触发
2)人为触发:

$a=5;
$b=0;
if($b==0){
//人为触发
trigger_error('人为触发错误!');//默认notice ,会继续执行
}
echo $a/$b;
if($b==0){
//人为触发
trigger_error('人为触发错误!'E_USER_ERROR);//默认notice ,会继续执行
}
echo $a/$b;

错误设置

错误显示设置
1)PHP配置文件:
全局配置 php,ini
display_error
2)运行在PHP脚本设置
error_reporting():设置对应错误显示级别
Ini_set(‘配置文件中的配置项’,配置项)
Ini_set(‘error_reporting’,E_ALL)
Ini_set(‘display_errors’,1)

错误日志设置
需要在PHP配置我文件中或者代码中(ini_set)设置对应的error_log配置项,并且开启错误日志的功能log_errors=on
在这里插入图片描述
在这里插入图片描述

错误自定义处理

最简单处理:trigger_errors()函数,该函数不会阻止系统报错
mixed
1)将用户自定义函数放在系统中set_error_handler()
2)自定义错误处理,注册自定义函数(修改错误处理机制)
代码实现:

//自定义错误机制
/*自定义函数
@param $errno ,时系统提供的错误代码:E_ALL,E_NOTICE
*/
header('Content-type:text/html;charset=utf-8')
function my_error($errno,$errstr,$errfile,$errline){
//判断:当前会碰到错误有哪些
if(!(error_reporting() &errno)){//排除系统本身错误
return false}

//开始判读错误类型
switch($errno){
case E_ERROR:
case E_USER_ERROR:
	echo 'fatal error in file' .$errfile .'on line' .$errline .'<br>';
	echo 'error info:'.$errstr;
	break;
case E_WARNING:
case E_USER_WARNING:
	echo 'warning error in file' .$errfile .'on line' .$errline .'<br>';
	echo 'error info:'.$errstr;
	break;
case E_NOTICE:
case E_USER_NOTICE:
	echo 'notice in file' .$errfile .'on line' .$errline .'<br>';
	echo 'error info:'.$errstr;
	break;
}
return true;
}	
//报错
echo $a;
//修改错误机制
set_error_handler('my_error');

echo $a;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值