(PHP 4 >= 4.0.1, PHP 5)
set_error_handler -- Bestimmt eine benutzerdefinierte Funktion zur Fehlerbehandlung.
Setzt eine benutzerdefinierte Funktion (error_handler
)
um Fehler in einem Skript zu bearbeiten. Die Funktion gibt die
zuvor benutzte Fehlerbehandlungsroutine (falls eine definiert
wurde) zurück oder FALSE, falls ein Fehler auftrat. Mit dieser
Funktion können Sie Ihre eigene Behandlung von Laufzeitfehlern
definieren, beispielsweise in Anwendungen, die bei einem
kritischen Fehler die Löschung von Daten bzw. Dateien erfordert
oder wenn es nötig ist, unter bestimmten Bedingungen (mit
der Funktion trigger_error()) eine
Fehlermeldung zu generieren.
Die benutzerdefinierte Funktion erwartet notwendig zwei Parameter: den Fehlercode und eine Beschreibung des Fehlers als String. Ab PHP 4.0.2 sind zudem drei optionale Parameter verfügbar: der Name der Datei, in der der Fehler auftrat, die Nummer der Zeile, in der der Fehler auftrat und der Kontext, in welchem der Fehler auftrat (ein Array, das auf den Punkt in der aktiven Symboltabelle verweist, wo der Fehler auftrat).
Anmerkung: Anstelle eines Funktionsnamens kann auch ein Array, das eine Referenz auf ein Objekt und einen Methodennamen enthält, übergeben werden. (Seit PHP 4.3.0)
Anmerkung: Die folgenden Fehlertypen können nicht von einer benutzerdefinierten Funktion behandelt werden: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR und E_COMPILE_WARNING.
Das untenstehende Beispiel zeigt die Behandlung von internen Ausnahmen, indem eine Fehlermeldung und die Behandlung des Fehlers durch eine benutzerdefinierte Funktion ausgelöst wird:
Beispiel 1. Fehlerbehandlung mit set_error_handler() und trigger_error()
Wenn Sie dieses Skript ausführen, erhalten Sie die folgende Ausgabe:
|
Es ist wichtig und darf nicht vergessen werden, dass die standardmässige PHP Fehlerbehandlung vollkommen umgangen wurde. Die Einstellungen der Funktion error_reporting() haben keine Auswirkung und Ihre eigene Fehlerbehandlungsroutine wird ohne Rücksicht darauf aufgerufen. Sie können jedoch immer noch den aktuellen Wert von error_reporting lesen und entsprechend handeln. Von besonderer Bedeutung ist, dass dieser Wert 0 sein wird, falls der Befehl, der den Fehler verurscht hat, mit dem @ error-control operator versehen ist.
Beachten Sie auch, dass Sie die() aufrufen können, wenn es notwendig ist. Wenn die Fehlerbehandlungsfunktion zurückkehrt, wird die Ausführung des Skripts beim nächsten Befehl nach dem fehlerverursachenden Befehl fortgesetzt.
Anmerkung: Falls Fehler auftreten, bevor das Skript ausgeführt wird (z. B. bei Dateiuploads), kann eine benutzerdefinierte Fehlerbehandlung nicht aufgerufen werden, weil sie zu diesem Zeitpunkt noch nicht registriert ist.
Siehe auch error_reporting(), restore_error_handler(), trigger_error(), und error level constants.
Zurück | Zum Anfang | Weiter |
restore_exception_handler | Nach oben | set_exception_handler |