Kapitel 3, Fehlerbehandlung
Zitat aus der Einleitung
Kapitel 3, Fehlerbehandlung
Fehler zu machen gehört zum Leben. Kapitel 3 deckt sowohl die prozeduralen als auch die objektorientierten Fehlerbehandlungsmethoden von PHP ab, wobei das Hauptgewicht auf den neuen Möglichkeiten von PHP 5 liegt, die auf der Verwendung von Ausnahmen beruhen.
Die Einleitung lässt es schon vermuten. Auch dieses Kapitel ist zweigeteilt.
Dieses Kapitel war auch ein Grund, warum ich dieses Buch überhaupt gekauft habe. Es steht als Leseprobe auf der offiziellen Produktwebseite von Addison-Wesley zur Verfügung. Schaut ruhig mal hinein.
Ich habe nun den ersten Teil fertig (Kapitel 3.1 und Kapitel 3.2).
Dieser Teil beschäftigt sich mit den grundlegenden, in PHP integrierten Fehlerroutinen und bietet einen, in meinen Augen, sehr gelungen, umfassenden Überblick über die Fehlerbehandlung in PHP.
Neben Erläuterungen zu den unterschiedlichen Fehlerebenen (E_NOTICE, E_WARNING und E_ERROR (ab PHP 5 noch E_STRICT)) findet man auch gut dargestellte Beispiele, warum man sich überhaupt mit der Behandlung von Fehlern befassen sollte.
Ich habe das bislang immer so gehandhabt, dass ich ein PHP-Code:
error_reporting(E_ALL);
zu Beginn meiner Skripte stehen hatte und damit war es getan. Ich habe mich nie wirklich mit dieser Materie befasst und ich kann nur sagen. So eine Übersicht habe ich gebraucht.
Die Informationen werden sehr gut "an den Mann gebracht". Jedenfalls geht es mir so.
In Kapitel 3.1.3 (Fehler ignorieren) wird die @-"Syntax" angesprochen. Diesbzgl. habe ich hier einen Thread eröffnet. Ich würde das Kapitel als "der Vollständigkeit halber hinzugefügt" beschreiben. Da es sich nur über eine halbe Buchseite erstreckt ist das sicherlich in Ordnung so! 
Bevor ich mich Kapitel 3.3 bzw. dem Bericht über dasselbe zuwende möchte ich noch ein kurzes Zitat aus Kapitel 3.2 anbringen
Der Aufwand, per Hand Fehler durch mehrere aufrufende Funktionen durchzureichen, ist einer der Hauptgründe für die Implementierung von Ausnahmen in Programmiersprachen. Und jetzt unterstützt auch PHP in der Version 5 Ausnahmen.
Und genau aus diesem Grund werde ich mich jetzt etwas intensiver mit dem zweiten Teil des dritten Kapitels befassen.
So. Nach einer kleinen Pause bin ich nun am Ende des dritten Kapitesl angekommen und kann sagen, dass ich durch das Studium fortführender Quellen (z.B. das PHP-Manual) doch auf diesem Sektor, zumindest theoretisch, verbessert habe.
Der Autor erklärt recht detailliert, was Ausnahmen sind und wie sie syntakisch in PHP angewendet werden.
Einige Codeschnipsel sind nicht ganz korrekt, so ist natürlich eine Klasse PHP-Code:
class AltException {}
keine Exception, da die Klasse nicht von Exception erbt.
Dies sind aber Sachen, die man sich - sofern man es nicht weiß - mittels try & error und dem Nachschlagen im Manual selbst beibringen kann.
In meinen Augen könnte das sogar ein taktisch gesetzter Fehler sein, damit man mal sein Hirn einschaltet. 
Es wird auf die Möglichkeit eingegangen ausführliche Fehlermeldungen zu produzieren bzw. sich diese von den Exceptions liefern zu lassen. Dies ist an einem Beispiel sehr gut erklärt und leicht verständlich. Ich möchte an dieser Stelle nicht auf das Beispiel eingehen.
Es sei nur auf die Seiten verwiesen: Seite 115 bis Seite 118 in Kapitel 3.3.2, Beispiel für eine typisierte Ausnahme.
Für mich war dann noch das Kapitel 3.3.4 (Fehler im Konstruktor behandeln) interessant. Das Kapitel ist sehr kurz gehalten vermittelt aber eine für mich wichtige Sache.
Wenn eine Exception innerhalb des Konstruktors geworfen wird, wie z.B. in diesem Beispiel
PHP-Code:
class Test {
public function __construct() {
throw new Exception();
}
public function __destruct() {
echo 'destructing instance';
}
}
So wird der Destruktor nicht aufgerufen, weil das Objekt gar nicht erstellt wurde.
Dies war mir nicht bewusst und hat somit einen Wissensmangel bei mir ausgeglichen. 
Kapitel 3.3.5 geht dann auf die Einrichtung eines Standard-Exception-Handlers ein. Sehr interessant, wie ich finde. Das Kapitel geht allgemein an die Sache heran, vermittelt aber einen guten Eindruck, warum solche ein Standard-Handler sinnvoll sein kann.
Es wird ein Beispiel für eine mögliche Implementierung geboten, allerdings denke ich, dass diese Implementierung auch vom System abhängt, indem der Handler verwendet werden soll.
Auch an dieser Stelle sei auf das PHP-Manual verwiesen!
Kapitel 3.3.6 passt meiner Ansicht nach nicht wirklich zum Kapitel "Fehlerbehandlung".
Der Titel "Daten überprüfen" machte mich neugierig, was denn Exceptions noch alles so zu bieten haben. Letztlich wird hier aber nur oberflächlich beschrieben, wie man Cross-Site-Scripting vermeidet bzw. Daten auf Ihre Validität prüft etc.
In meinen Augen an dieser Stelle absolut unpassend, weil in keinem Zusammenhang mit der Fehlerbehandlung, die man zuvor erläutert bekam.
Im Ganzen bin ich aber doch zufrieden mit dem Kapitel, da ich sehr viele neue, interessante Punkte kennengelernt habe, welche ich auch teilweise direkt umsetzen konnte.
Da ich Exceptions an sich schon aus Java kenne, ist das nichts Neues für mich. Nichtsdestotrotz war es für mich hilfreich zu sehen, was für Möglichkeiten einem Ausnahmen in PHP bieten.
Kritikpunkt ist neben dem unpassenden Kapitel über Cross-Site-Scripting und einigen kleineren Fehlern, das Fehlen von ein paar leckeren Tricks und Kniffen zur Anwendung von Ausnahmen in PHP.
Dies liegt aber eventuell daran, dass der Autor selbst nicht der absolute Liebhaber von Ausnahmen ist .. so kam es mir zumindest vor.
Lesezeichen