phpbar.de logo

Mailinglisten-Archive

[php] Exceptions selbst gebaut

[php] Exceptions selbst gebaut

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mon Okt 23 13:09:08 CEST 2006


Hallo Hannes,

Am Montag, 23. Oktober 2006 12:41 schrieb Hannes H.:
> Nennt mich Wahnsinnig, aber ich möchte beim Rewrite meines Projektes
> das Errorhandling (vorallem das eigener Klassen) komplett auf
> Exceptions aufhängen. Hat schon mal jemand gute Erfahrungen mit
> selbst gebauten Exceptions gemacht?

was ist daran wahnsinnig? :-) Wenn man es vernünftig macht, ist das sehr 
hilfreich, weil die Ausnahmebehandlung zentral verwaltet wird und durch 
Erweiterungen Fehler genau hierarchisch spezifiziert werden können. 
Seit ich PHP5 installiert habe, arbeite ich mit den Exceptions. Das 
funktioniert sehr schön. :-)


> Meine eigentliche Frage ist allerdings: Wenn ich in einer Klasse
> MyClass die Methode fooBar() implemientiere, und in dieser Methode
> eine Exception mit throw werfe. Kann ich diese Außerhalb dann
> Abfangen? Eigentlich ja, oder? Sonst hätten Exceptions meiner Meinung
> nach null Sinn. Als kleines Beispiel:
>
> <?php
>
> $blubb = new MyClass();
> try
> {
>    $blubb->fooBar();
> }
> catch(MyOwnException e)
> {
>    /* */
> }
> ?>
>
> Funktioniert das so?

Deine Frage verwirrt mich etwas, vor allem im Zusammenhang mit dem 
Code. :-) Die Ausnahme wird dort behandelt, wo sie auftritt. try und 
catch stellen ja einen gemeinsamen Block dar.

Es bleibt aber Dir überlassen, WO Du die Ausnahme abfängst. Das kann 
innerhalb der Funktion $blubb->fooBar() und damit innerhalb der Klasse 
sein oder auch außer der Funktion und Klasse.

Grundsätzlich würde ich aber eine Ausnahme immer genau dort abfangen, wo 
sie auftritt, nämlich innerhalb von $blubb->fooBar(). Fängst Du den 
Fehler außerhalb ab, mußt Du das ja dann überall tun, wo Du 
$blubb->fooBar() verwendest. Diese Redundanz ist wenig sinnvoll. Auch 
sonst hast Du aus meiner Sicht oben zu prozedural gedacht.

Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive