4.6.4 Fehlerbehandlung in PHP

In PHP gibt es sogenannte Magische Konstanten. Die Magischen Konstanten __FILE__ und __LINE__ können beim Erkennen und Lokalisieren von Fehlern helfen.

1
2
3
4
5
6
function report_error($file, $line, $message)
{
    echo "Fehler in $file in Zeile $line aufgetreten: $message";
}

report_error(__FILE__, __LINE__, "Irgendwas funktioniert nicht.");

Ausgabe:
Fehler in Dateipfad in Zeile Zahl aufgetreten: Irgendwas funktioniert nicht.

Exceptionhandling - mit der Klasse Exception

Fehler können mit einem try-Block abgefangen werden. Hierzu ist der Code, in dem ein Fehler auftreten könnte, in den Block hineinzuschreiben. Falls nun ein Fehler auftritt, wird ein Objekt durch die Anweisung throw erzeugt. Bei einem Fehler wird der Code im catch-Block ausgeführt.

Wenn man verschiedene Arten von Fehlern behandeln will, sollte man mit mehreren Fehlerklassen arbeiten, die aus der Fehlerklasse Exception abgeleitet werden.

function division($numerator, $denominator)
{
    // numerator = Zähler, denominator = Nenner
    if ($denominator == 0) {
        throw new Exception("Es kann nicht durch 0 dividiert werden!");
    }    
    $result = $numerator / $denominator;
    return $result;
}

try {
    echo division(5, 0);
} catch (Exception $error) {
    echo "Fehler: " . $error->getMessage();
}

Ausgabe:
Fehler: Es kann nicht durch 0 dividiert werden!

Hinweis

PHP ermöglicht Ihnen den Austausch der gesamten Fehlerbehandlung durch die Funktionen set_error_handler und set_exception_handler. So können Sie Fehler auf der Seite unterdrücken, aber im Hintergrund alles mitschreiben und darauf reagieren.