Der-Dennis: Return in try-catch-Block

Beitrag lesen

Hey dedlfix,

wie einmal danke für Deine Antwort.

mir ist neulich aufgefallen, dass bei den meisten Anwendungen (oder Frameworks: Zend Framework ist so ein Beispiel) ein return nicht in einem try-catch-Block verwendet wird.
Hat jemand eine Idee, warum dies häufig so gemacht wird?

An einem theoretischen Beispiel kann man eine Menge Theorien entwickeln.

Ja, da hast Du recht. Da war mein Beispiel nicht glücklich gewählt.

An einer echten Anwendung könnte man zumindest versuchen, die Intention dahinter aus dem Kontext zu finden.

Genau da habe ich bei einigen Dingen Probleme, also die Intention dahinter zu finden. Hier ein Beispiel aus dem Zend Framework, genauer gesagt die Methode getLocale() aus der Klasse Zend_Controller_Router_Route (die hab ich grad als erstes gefunden):

  
    public function getLocale()  
    {  
        if ($this->_locale !== null) {  
            return $this->_locale;  
        } else if (($locale = self::getDefaultLocale()) !== null) {  
            return $locale;  
        } else {  
            try {  
                $locale = Zend_Registry::get('Zend_Locale');  
            } catch (Zend_Exception $e) {  
                $locale = null;  
            }  
  
            if ($locale !== null) {  
                return $locale;  
            }  
        }  
  
        return null;  
    }  

Hierbei wird ein try-catch-Block wie im vorherigen Beispiel verwendet (mal ganz abgesehen davon, dass die if-Abfrage innerhalb des else-Zweigs für mich sinnlos ist. Genauso gut könnte ich die weglassen und am Ende $locale zurückgeben).

Du könntest aber erst einmal die Coding-Style-Guidelines durchsuchen, ob darin etwas zu finden ist.

Das ist ein super Tipp! Da habe ich ewig nicht mehr reingeschaut. Auf die Schnelle habe ich unter http://pear.php.net/manual/en/standards.errors.php im Beispiel "Rethrowing an exception" bei "Error Signaling in PHP 5 PEAR packages" auch schon gefunden, dass ein return innerhalb eines try stattfindet.

So, jetzt werde ich mir erst einmal wieder in Ruhe die Coding Standards zu Gemüte führen.

Für alle, die es auch interessiert, hier ein paar Einsteiger-Links:
http://pear.php.net/manual/en/standards.php
http://framework.zend.com/wiki/display/ZFDEV/PHP+Coding+Standard+(draft)
http://framework.zend.com/manual/de/coding-standard.coding-style.html

Gruß, Dennis