Fehlerbehandlung
Zur globalen Fehlerbehandlung nutzt das Framework die Funktion
errorHandler. Diese
hat die Aufgabe, alle auftretenden Fehler abzufangen und an zentraler Stelle zu behandeln. Zu diesem
Zweck nutzt die Funktion eine
ErrorHandler-Komponente, die über die Registry
konfigurierbar ist. Letztere ist dann für die eigentliche Behandlung eines Fehlers verantwortlich.
Die im APF vorkonfigurierte Fehlerbehandlung beinhaltet dabei die Speicherung der Meldung in einer
Log-Datei und die Ausgabe des Fehlers inklusive des Stacktraces. Details können der
API-Dokumentation der Klasse
DefaultErrorHandler entnommen werden.
Um den vorkonfigurierten
DefaultErrorHandler durch einen eigenen zu ersetzen muss der
Registry-Offset
ErrorHandler im Namespace
apf::core mit der
gewünschten
ErrorHandlerDefinition ersetzt werden. Die Konfiguration einer
eigenen Fehlerbehandlungsroutine muss dabei in der Bootstrap-Datei nach dem Einbinden der
pagecontroller.php erfolgen.
Die Definition einer eigenen Fehler-Behandlungskomponente gestaltet sich wie folgt:
PHP-Code
Registry::register(
'apf::core',
'ErrorHandler',
new ErrorHandlerDefinition(
'my::errorhandler::namespace',
'MyErrorHandler'
)
);
Wie aus dem Code-Beispiel zu erkennen ist, wird ein
ErrorHandler durch seinen Namespace und
seinen Klassennamen referenziert.
Hinweis: enthält der Registry-Offset keine gültige Definition, werden
auftretende Fehler in Text-Form ausgegeben. Der Fallback-Modus ist daran zu erkennen, dass die Meldung
mit
APF-Template
APF catchable error:
beginnt. In diesem Fall muss die Definition oder die Implementierung der ErrorHandler-Klasse
überprüft werden.
Um den ErrorHandler zu deaktivieren kann der Registry-Eintrag mit null
initialisiert werden.
Um eine eigene Fehlerbehandlung einzuführen, muss die Klasse
AbstractErrorHandler
implementiert werden. Diese definiert folgendes Interface:
PHP-Code
class AbstractErrorHandler extends APFObject {
function handleError($errorNumber,$errorMessage,$errorFile,$errorLine){
}
}
Bei Auftreten eines Fehlers werden der Methode
handleError die Parameter
- Fehler-Nummer
- Fehler-Meldung
- Datei, in der der Fehler auftritt
- Zeile, in der der Fehler auftritt
übergeben. Da die Fehlerbehandlung in einer eigenen Klasse stattfindet, die nicht mit dem
ServiceManager erzeugt wurde, steht der Zugriff auf den aktuellen
Context und die
aktuelle
Sprache nicht zur Verfügung!
Sollten diese Informationen für die Behandlung des Fehlers notwendig sein, müssen diese
über in einer Applikation verfügbaren Informationscontainer (z.B. Model-Klasse eines Modules)
bezogen werden. Der Umgebungsparameter steht wie in der Dokumentation beschrieben über die
Registry zur Verfügung.
Der globale Fehler-Behandlungsmechanismus kann einfach durch Aufrufen der PHP-Funktion
genutzt werden. Details können der Online-Dokumentation unter
http://php.net/trigger_error entnommen werden.
Kommentare
Möchten Sie den Artikel eine Anmerkung hinzufügen, oder haben Sie ergänzende Hinweise? Dann können Sie diese
hier einfügen. Die bereits verfassten Anmerkungen und Kommentare finden Sie in der untenstehenden Liste.
Für diesen Artikel liegen aktuell keine Kommentare vor.