Function.set-error-handler
Aus PHP-Wiki
set_error_handler — Bestimmt eine benutzerdefinierte Funktion zur Fehlerbehandlung
Inhaltsverzeichnis |
Beschreibung
mixed set_error_handler (callback $error_handler [, int $error_types ] )
Setzt eine benutzerdefinierte Funktion (error_handler
),
um Fehler in einem Skript zu behandeln.
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.
Vergessen Sie bei der Implementation auf keinen Fall, dass auf diese Weise
die standardmäßige PHP-Fehlerbehandlung vollkommen umgangen wird! 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. Es ist besonders zu beachten, dass dieser Wert 0 sein wird, falls
die Anweisung, die den Fehler verursacht hat, mit dem @ Fehler-Kontroll-Operator
versehen ist.
Beachten Sie auch, dass Sie dafür zuständig sind, bei Bedarf
die() aufzurufen. Nach der Funktion für die
Fehlerbehandlung wird die Ausführung des Skripts bei der Anweisung
fortgesetzt, die auf die Fehler verursachende Anweisung folgt.
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,
E_COMPILE_WARNING und die meisten
E_STRICT, die in der Datei ausgelöst werden, in der
set_error_handler() aufgerufen wird.
Falls Fehler auftreten, bevor das Skript ausgeführt wird (z.B. beim
Hochladen von Dateien), kann eine benutzerdefinierte Fehlerbehandlung nicht
aufgerufen werden, weil sie zu diesem Zeitpunkt noch nicht registriert ist.
Parameter-Liste
- error_handler
- Die benutzerdefinierte Funktion erwartet notwendig zwei Parameter: den Fehlercode und eine Zeichenkette, die den Fehler beschreibt. Zudem gibt es drei optionale Parameter, die übergeben werden können: 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 die Stelle in der aktiven Symboltabelle verweist, wo der Fehler auftrat). Die Funktion lässt sich wie folgt darstellen: handler ( int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]] ) errno Der erste Parameter errno enthält den Schweregrad des ausgelösten Fehlers als Integer. errstr Der zweite Parameter errstr enthält die Fehlermeldung als String. errfile Der dritte Parameter errfile ist optional. Er enthält den Namen der Datei, in der der Fehler verursacht wurde, als String. errline Der vierte Parameter errline ist optional. Er enthält die Zeilennummer, in der der Fehler verursacht wurde, als Integer. errcontext Der fünfte Parameter errcontext ist optional. Es handelt sich um ein Array, das auf die Stelle der aktiven Symboltabelle zeigt, die den Fehler verursacht hat. Mit anderen Worten: errcontext enthält ein Array mit allen Variablen, die im fehlerauslösenden Bereich existierten. Die benutzerdefinierte Fehlerbehandlung darf den Fehlerkontext nicht verändern. Falls diese Funktion FALSE zurückgibt, wird mit der normalen Fehlerbehandlung fortgesetzt.
- Fehlertypen
- Kann wie die php.ini-Konfigurationseinstellung error_reporting, die bestimmt, welche Fehler angezeigt werden zum Maskieren des Aufrufs der error_handler -Funktion verwendet werden. Wird diese Maske nicht gesetzt, wird error_handler unabhängig von der Einstellung error_reporting bei jedem Fehler aufgerufen.
Rückgabewerte
Gibt eine Zeichenkette, die die zuvor definierte Fehlerbehandlungsroutine enthält (falls eine definiert wurde). Wenn der eingebaute Errorhandler verwendet wurde, wird NULL zurückgegeben. NULL wird ebenfalls zurückgegeben, falls ein Fehler wie z.B. ein ungültiger Callback aufgetreten ist. Wenn der vorgenannte Errorhandler eine Klassenmethode war, gibt die Funktion ein indiziertes Array mit dem Klassen- und dem Methodennamen zurück.
ChangeLog
Version
Beschreibung
5.2.0
Die Fehlerbehandlung muss FALSE zurückgeben, um
$php_errormsg zu füllen.
5.0.0
Der Parameter error_types
wurde hinzugefügt.
4.3.0
Anstelle eines Funktionsnamens kann auch ein Array, das eine Referenz
auf ein Objekt und einen Methodennamen enthält, als
error_handler
übergeben werden.
4.0.2
Drei optionale Parameter für die Benutzerfunktion
error_handler
hinzugefügt: den Dateinamen,
die Zeilennummer und den Kontext.
Beispiele
=== #1 Fehlerbehandlung mit set_error_handler() und [[function.trigger=== <div class=|
Siehe auch
ErrorException]] error_reporting() restore_error_handler() trigger_error() Errorlevel-Konstanten Informationen über den Callback-Typ