PHP
downloads | documentation | faq | getting help | mailing lists | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ErrorException::__construct> <Vordefinierte Exceptions
Last updated: Fri, 14 Nov 2008

view this page in

ErrorException

Einführung

Eine Error Exception.

Klassenbeschreibung

ErrorException
ErrorException extends Exception {
/* Eigenschaften */
protected int $severity ;
/* Methoden */
public ErrorException::__construct ([ string $message [, int $code [, int $severity [, string $filename [, int $lineno ]]]]] )
final public int ErrorException::getSeverity ( void )
/* Geerbte Methoden */
final public string Exception::getMessage ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public string Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private string Exception::__clone ( void )
}

Eigenschaften

severity

Die Schwere einer Exception

Beispiele

Beispiel #1 Verlagern aller Fehlermeldungen nach ErrorException.

<?php
function exception_error_handler($errno$errstr$errfile$errline ) {
throw new 
ErrorException($errstr0$errno$errfile$errline);
}
set_error_handler("exception_error_handler");

/* Exception ausloesen */
strpos();
?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

Fatal error: Uncaught exception 'ErrorException' with message 'Wrong parameter count for strpos()' in /home/bjori/tmp/ex.php:8
Stack trace:
#0 [internal function]: exception_error_handler(2, 'Wrong parameter...', '/home/bjori/php...', 8, Array)
#1 /home/bjori/php/cleandocs/test.php(8): strpos()
#2 {main}
  thrown in /home/bjori/tmp/ex.php on line 8

Inhaltsverzeichnis



ErrorException::__construct> <Vordefinierte Exceptions
Last updated: Fri, 14 Nov 2008
 
add a note add a note User Contributed Notes
ErrorException
chris AT cmbuckley DOT co DOT uk
13-Nov-2008 12:24
The backtrace of ErrorException is broken in PHP 5.2 (listed at http://bugs.php.net/bug.php?id=46449 and explained at http://bugs.php.net/bug.php?id=45895#c140511).

A simple fix for your exception handler:

<?php
$backtrace
= $exception->getTrace();

if (
$exception instanceof ErrorException) {
    for (
$i = count($backtrace) - 1; $i > 0; --$i) {
       
$backtrace[$i]['args'] = $backtrace[$i - 1]['args'];
    }
}
?>
makariverslund at gmail dot com
10-Sep-2008 01:08
Building upon the notes present, here is a set of functions that transforms the error into an exception and reports the error to screen / log depending upon the PHP ini settings.

//Begin helper function definition
function ReportError ($msg)
{
    // be sure that the supplied parameter is a string and not empty
    if (empty ($msg) || !is_string ($msg))
    {
        throw new ErrorException ('Invalid parameter supplied to ReportError', 0, E_ERROR);
    }
   
    // retrieve error settings
    $display    = strtolower (ini_get ('display_errors'));
    $log        = strtolower (ini_get ('log_errors'));
   
    // check if we're displaying errors
    if ($display === 'on' || $display === '1' || $display === 1 || $display === 'true' || $display === true)
    {
        echo $msg;
    }
   
    // check if we're logging errors
    if ($log === 'on' || $log === '1' || $log === 1 || $log === 'true' || $log === true)
    {
        $result = error_log ($msg);
       
        // check for error while logging
        if (!$result)
        {
            throw new ErrorException ('Attempt to write message to error log failed in ReportError', 0, E_ERROR);
        }
    }
}

//Begin main function definition
function ErrorsAsExceptions ($level, $msg, $fileName, $lineNumber)
{
    // do nothing if error reporting is turned off
    if (error_reporting () === 0)
    {
        return;
    }

    // be sure received error is supposed to be reported
    if (error_reporting () & $level)
    {   
        try
        {
            // report error to appropriate channels
            ReportError ($reportMsg);
        }
        catch (ErrorException $e)
        {
            // ignore errors while reporting
        }
       
        // go ahead and throw the exception
        throw new ErrorException ($msg, 0, $level, $fileName, $lineNumber);
    }
}
troelskn at gmail dot com
29-Jul-2008 11:08
The following snippet installs an error-handler that turns errors into exceptions. It respects error-reporting level, so that you can still use error-suppression:

<?php
function exceptions_error_handler($severity, $message, $filename, $lineno) {
  if (
error_reporting() == 0) {
    return;
  }
  if (
error_reporting() & $severity) {
    throw new
ErrorException($message, 0, $severity, $filename, $lineno);
  }
}
set_error_handler('exceptions_error_handler');
?>

ErrorException::__construct> <Vordefinierte Exceptions
Last updated: Fri, 14 Nov 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites