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(" error: $error_msg", $error_type);
    }
  著名的Smarty就是这么做的.