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 .= " $error_file<br>\n"; $ErrMsg .= " 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; } }
暂无评论