# 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
    7
    <?php
    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.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    <?php
    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.