error_reporting(1048);
class ErrorHandlers extends Exception{ private _context = null;
function __construct(level, string, file, line, context=null){ parent::__construct(string,level); this->file = file; this->line = line; this->_level = level; this->_context = context; }
function __destruct(){ // parent::__destruct(); }
function Message(){ errors = array( E_ERROR => 'error', E_WARNING => 'warning', E_PARSE => 'parsing error', E_NOTICE => 'notice', E_CORE_ERROR => 'core error', E_CORE_WARNING => 'core warning', E_COMPILE_ERROR => 'compile error', E_COMPILE_WARNING => 'compile warning', E_USER_ERROR => 'user error', E_USER_WARNING => 'user warning', E_USER_NOTICE => 'user notice' );
str = errors[parent::getCode()].': '.parent::getMessage().' 在 '.parent::getFile(). ' 的第 '.parent::getLine().\行\\n\
if(this->_level==E_USER_ERROR){ str .= ('
致命错误'); }
echo('
'); echo(str); echo(''); } } function error_handler(errno,errstr,errorfile,errline,errtext){ throw new ErrorHandlers(errno,errstr,errorfile,errline,errtext);
}
function exception_handler(Exception e) {
errors = array( E_ERROR => 'error', E_WARNING => 'warning', E_PARSE => 'parsing error', E_NOTICE => 'notice', E_CORE_ERROR => 'core error', E_CORE_WARNING => 'core warning', E_COMPILE_ERROR => 'compile error', E_COMPILE_WARNING => 'compile warning', E_USER_ERROR => 'user error', E_USER_WARNING => 'user warning', E_USER_NOTICE => 'user notice');
echo errors[e->getCode()].': '.e->getMessage().'在'.e->getFile(). '的第'.e->getLine().\行\\n\echo e->getMessage(); die(); } //
set_error_handler('error_handler'); //restore_error_handler();
set_exception_handler('exception_handler'); //restore_exception_handler();
我肯定是错误 ?>
执行结果:
notice: Use of undefined constant 我肯定是错误 - assumed '我肯定是错误'在E:\\web\\web\\php\\bi\\exception\\m.php的第74行 Use of undefined constant 我肯定是错误 - assumed '我肯定是错误'
另外,在类中,还可以这样:
function trigger_error(error_msg, error_type = E_USER_WARNING) {
trigger_error(\}
著名的Smarty就是这么做的.