PHP Exceptions Formatieren
Ein Webdesigner, der gelegentlich mit PHP arbeitet und z.B. die in PHP 5 neu hinzugekommenen Erweiterungen wie MYSQLi nutzt oder vielleicht sogar komplett Objektorientiert programmiert, bekommt hin und wieder mal eine Exception um die Ohren geworfen. (Mehr über PHP Exceptions)
Auf den ersten Blick sind diese relativ unübersichtlich und kaum leserlich – mit einem einfachen “Trick” lassen sich diese Fehlermeldungen aber leicht formatieren. PHP stellt dafür den Befehl set_exception_handler() bereit. diesem Befehl übergibt man einen beliebigen Funktionsnamen. PHP wird somit angewiesen im Falle einer nicht anderweitig gefangenen Exception diese Funktion aufzurufen.
In dieser Funktion kann man nun ganz normal auf die Exception zugreifen, Daten auslesen und ausgeben. Mit ein paar einfach HTML Tags lassen sie sich relativ komfortabel gestalten, sodass sie etwas übersichtlicher sind. Folgender Beispielcode kann einfach in die Hauptdatei (z.B. index.php) integriert werden und schon werden nicht gefangenen Exceptions schön formatiert ausgegeben.
function iExceptionHandler($e) { $res = " <h1>" . get_class($e) . "</h1> "; $res .= " <h2>{$e->getMessage()} ({$e->getCode()})</h2> "; $res .= "file: {$e->getFile()}"; $res .= "line: {$e->getLine()}"; $trace = explode('#', $e->getTraceAsString()); foreach ($trace as $single) { $res .= "$single"; } die($res); } set_exception_handler('iExceptionHandler');
Vor allem beim Entwickeln größerer Anwendungen ist das, wie ich persönlich finde, eine einfach einzurichtenden Erleichterung ungefangene Exceptions komfortabel formatiert lesen zu können.
In einem Produktivsystem könnte man auch einfach die Daten in eine XML Datei oder Datenbank hinterlegen und dem User nur eine allgemeine Fehlermeldung anzuzeigen. Denn die Exceptions interessieren, sollten sie je in einem Produktivsystem auftreten, eh nur den Entwickler selber
(Vor allem wenn da noch Datenbankpasswörter ausgegeben werden)
So, wünsche noch viel Spaß beim natürlich möglichst fehlerfreiem Webdesign.
Buchtipps rund um PHP
Wenn dir dieser Beitrag gefällt, lade den Autor doch mal zu einem Drink ein ;-)Tags: MySQLi, PHP, webdesign

In den meisten fällen wird bei DB Fehlern nur angegeben, dass ein Passwort benutzt wurde, aber nicht welches.
Trotzdem eine gute Idee, ich werde das im Hinterkopf für meine Projekte behalten
Jo, fein. Mir hat auch weitergeholfen http://www.sqlexikon.de, bißchen was über MySQL und ein tolles sql tutorial! Sql Befehl schnell nachgeschlagen.
VG
tabler
Thanks for sharing this coding is very useful. I’m finding coding like this for my website.
[...] Die Standardausgabe von PHP die angezeigt wird wenn eine Ausnahme nicht gefangen wird ist ziemlich unübersichtlich, wie man diese mittels set_exception_handler etwas übersichtlicher gestalten kann beschreibt Stephan Linzner in seinem Artikel PHP Exceptions Formatieren. [...]