|
(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 |
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 17:57:22