• HOME
  • DOCS
  • WTF
  • TECH
  • LIFE
  • PAGES
    • ARCHIVE
    • TAGS
    • ABOUT
    • FRIENDS
    • RSS
  • TOOLS
    • GEO
    • RANDOM()
    • GOO.GL
    • CSS HEART
Aj's Blog

记录时间溜走的瞬间和折腾过的那些事

PHP自定义错误处理 set_error_handler

2012-08-05  TECH  display_errors  php  set_error_handler  

使用自定的 error handler 可以保护一些重要的错误信息不被泄露

也可以更直观 更美观的呈现 错误信息 方便排查bug。

官方说明文档 : http://php.net/manual/en/function.set-error-handler.php

一、set_error_handler 不能 handle 的错误

 The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called.

二、如何使用

前提是 在 php.ini 里开启了 display_errors = On 才会显示详细的错误信息

通过函数 set_error_handler( 函数名 ) 关联,所有的错误信息都会传递给指定的函数来处理

这时默认的 error_reporting() 将不再生效。

错误处理函数结构

your_function ( error_level, error_message, error_file, error_line,error_context)

我的实现

	set_error_handler ( 'ErrorHandler' );
	function ErrorHandler( $errno, $errstr, $error_file, $error_line )
	{
		$ErrMsg = "<U>PHP [$errno]</U></B><br>\n";
		$ErrMsg .= "&nbsp; &nbsp; $error_file<br>\n";
		$ErrMsg .= "&nbsp; &nbsp; line $error_line : $errstr<br><br>\n\n";
		switch ( $errno ) {
			case E_USER_ERROR:
				echo $ErrMsg;
				exit( '<h3>Stoped!</h3>' );
			case E_STRICT:
				return true;
				break;
			default:
				echo $ErrMsg;
				return true;
				break;
		}
	}
下一篇:   jquery实战遇到的几个问题:$(document).ready()、window.onload、bind
上一篇:   PHP v5.3 新特性
暂无评论

Cancel reply