PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP 5 Error Handling


Atomic
28.04.2004, 21:36
Fehler Abfangen in PHP war schon immer ein echter Murks und nie wirklich professionell ohne wirklich viel Arbeit zu investieren.

In PHP 5 gibts endlich "try {} catch {}"-Kontrollstrukturen die es erlauben auf eine viel gründlichere Art Fehler zu analysieren und abzufangen.

Hier ein sehr gutes Tutorial:
http://www.sitepoint.com/article/1192/12

Michel
18.02.2005, 16:34
Jaja, PHP5 und Exception handling ....das ist so eine Sache. Im Prinzip muss man sich trotzem darum kümmern Exceptions zu werfen um die dann mit einem Handler aufzufangen. Ich persönlich halte es nicht wirklich für sinnig und finde es schade das man bei PHP5 nicht den einen oder anderen Schritt weiter gegangen ist.

Exceptions abzufangen, so schön wie das bei Java oder C++ geht es bei PHP leider nicht. Aus diesem Grund sehe ich kein Anwendungsgebiet in PHP Exceptions abzufangen, oder?

Gruss,

Michel

Atomic
18.02.2005, 19:38
Der einzige wahre Vorteil der PHP-Exceptions besteht darin das dass Script ab der Stelle wo der Fehler auftritt keinen einzigen Befehlt weiter ausgeführt wird bis PHP irgendwo (egal wie tief das Script verschachtelt sein mag) auf einen catch-Blog trifft.)

Und dann gibts noch ein eine Reihe kleinerer Vorteile:

Man kann nicht nur eine bestimmte Exceptions abfangen sondern auch alle auf einmal. (Das geht weil alle Exception-Klassen von der Mutterklasse "exception" abgeleitet werden.)
Ist schneller als unzähliche Wenn/Dann-Schleifen (Auf jeden Fall wenn wir über mehrere Ebenen hinweg eine Fehlermeldung befördern.)
Jede Exception die nicht abgefangen wird wird automatisch zu einem PHP-Error (Sehr nützlich!)
Wir ersparen uns Fehler aller "Datei öffnen fehlgeschlagen" (die an mehreren Stellen im Script auftreten können) mehrfach abzufangen.

Exception eignen sich hauptsächlich um mit Fehlern wie z.B. einem Fehlgeschlagenen Dateiupload umzugehen(Fehler die erwartet werden.) oder wenn man viel im OOP Stil programmiert und Fehler über mehrere Ebenen weiterleiten möchte ohne unzähliche If/Else-Schleifen zu setzen.