PHP 使用回调函数(set_error_handler)处理异常和错误

 1、set_error_handler函数:指定出错时指向我们自定义的错误句柄处理函数。

2、error_log函数:专门用于日记记录。0:通过PHP标准的错误处理机制来记录;1:邮件发生到指定的地方;3指定的文件中

3、trigger_error函数:指定引发的错误类型。


<?php 
    // 错误处理函数
    function ErrorHandler($ErrNo, $ErrMsg, $File, $Line, $Vars)
    {
    	$Time = date("Y-m-d H:i:s"); // 错误发生时间
    	
    	// 将错误种类定义为关联数组
    	$ErrorType = array(1=>"Error", 2=>"Warning", 4=>"Parsing Error", 
    			8=>"Notice", 16=>"Core Error", 32=>"Core Warning", 
    			64=>"Complice Error", 128=>"Compile Warning", 256=>"User Error",
    			512=>"User Warning", 1024=>"User Notice", 2048=>"Strict Notice");
    	$Err = <<<ERROR_MESSAGE
    	<errorentry>
    	    <time>$Time</time>
    	    <number>$ErrNo</number>
    	    <type>$ErrorType[$ErrNo]</type>
    	    <errmsg>$ErrMsg</errmsg>
    	    <filename>$File</filename>
    	    <linenum>$Line</linenum>
ERROR_MESSAGE;
        
        // 用户定义的错误,通知的情况下记录变量的值
        if($ErrNo & (E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE))
    	{
    		$Err .= "\n<vars>".serialize($vars)."</vars>";
    	}
    	$Err .= "\n</errorentry>\n";
    	
    	// 保存到记录
    	error_log($Err, 3, "error.log"); 
    	// 重大错误以Mail通知
    	if($ErrNo == E_ERROR || $ErrNo = E_USER_ERROR)
    	{
    		//mail("xionghuihua@star-net.cn", "错误发生通知中", $Err);
    		echo "对不起。因为系统发生问题,停止服务中。";
    		die();
    	}
    }
    
    set_error_handler("ErrorHandler");
    function divide($Num, $Den)
    {
    	if($Den == 0)
    	{
    		trigger_error("Cannot divide by zero", Warning);
    	}
    	else
    	{
    		return ($Num/$Den);
    	}
    }
    
    $val = SOME_STRING;
    echo divide(5, 0);
?>




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值