Fehlerbehandlung

1. Einleitung

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.


2. Konfiguration

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
$reg = &Singleton::getInstance('Registry'); $reg->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.



3. Erweiterung

Um eine eigene Fehlerbehandlung einzuführen, muss die Klasse AbstractErrorHandler implementiert werden. Diese definiert folgendes Interface:
PHP-Code
class AbstractErrorHandler extends coreObject { 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.


4. Anwendung

Der globale Fehler-Behandlungsmechanismus kann einfach durch Aufrufen der PHP-Funktion
PHP-Code
trigger_error();
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.