phpbar.de logo

Mailinglisten-Archive

[php] Exceptions, was: Re: Übergabe eines Fehlercodes

[php] Exceptions, was: Re: Übergabe eines Fehlercodes

Sebastian Mendel lists at sebastianmendel.de
Mit Jul 13 09:44:00 CEST 2005


Dr. Volker Goebbels wrote:
> Hallo Dennis,
> 
>> arbeitest Du mit PHP4 oder mit PHP5?
>> Bei PHP5 ist es für mich klar: per Exception.
> 
> Exceptions sind ein Paradigma, über das sich vortrefflich
> streiten^h^h^h^h^hdiskutieren läßt. Nicht über Sinn oder Unsinn
> allgemein, der Sinn steht außer Frage. Nur für die Anwendungsbereiche.
> 
> Exceptions sind eine elegante Art, echte Fehler abzufangen.
> Rückgabewerte würde ich nicht out of band zurück geben.
> 
> Dafür gibt es mehrere Gründe:
> - Exceptions sind Objekte, die Fehlerfälle modellieren. Wenn man
>   Rückgabewerte damit abbildet heißt das, daß man die gesamte
>   Anwendungsdomäne, die man ja schon (hoffentlich) mit Objekten
>   modelliert hat, für die False-Fälle noch einmal nachmodelliert.
>   Sprich, man baut 2 separate aber analoge Objektbäume. Das
>   kann einen erheblichen Aufwand bedeuten.
> - Out of band heißt ja, daß sie am Execution Stack quasi vorbei
>   schießen, bis sie gecatcht werden. Das kann eine recht
>   komplexe Fehlerquelle sein. Und: "Any not catched exception
>   should be considered as a bug"
> 
> Also für ein "Ihr Username oder Paßword war leider falsch" würde ich
> keinesfalls eine Exception verwenden. Für ein "Die Datenbank mit den
> Logindaten ist nicht erreichbar" dagegen schon. Aber das ist zum Teil
> Geschmackssache ;)

genau!

da ein falscher Benutzername oder Passwort eindeutig keine 'Ausnahme'
ist gehört da auch kein 'Exception' hin!

'Ausnahmen' sollten der allerletzte Weg sein _Programm_-Fehler
abzufangen! (wobei 'Falscher Login' ja noch nicht mal ein
Programm-Fehler ist)

Auch ein nicht erreichen der DB ist kein Programm-Fehler, er wird erst
einer wenn der Programmierer schlampt.


-- 
Sebastian Mendel

www.sebastianmendel.de
www.sf.net/projects/phpdatetime | www.sf.net/projects/phptimesheet

php::bar PHP Wiki   -   Listenarchive