dedlfix: Return in try-catch-Block

Beitrag lesen

Hi!

aber dann hat man immer noch nicht eventuelle Exceptions der Registry aus anderen Gründen als Nichtvorhandensein gefangen.
Da wäre die Frage: Will man das denn?
Zum besseren Verständnis in diesem Fall, hier die statische get-Methode von Zend_Registry:

public static function get($index)

{
        $instance = self::getInstance();

if (!$instance->offsetExists($index)) {
            require_once 'Zend/Exception.php';
            throw new Zend_Exception("No entry is registered for key '$index'");
        }

return $instance->offsetGet($index);
    }

  
getInstance() wirft praktisch keine Exceptions (habs grad nachgesehen), also ist die einzige die, wenn der Key nicht existiert.  
  

> Wie oben in der Methode gezeigt wirft die Registry noch immer Exceptions. Allerdings in diesem Fall, wenn ein Schlüssel nicht existiert.  
> Was würdest Du in diesem Fall empfehlen? Try...catch oder if...else?  
  
In dem Fall kannst du auf das Vorhandensein prüfen und hättest keine weitere Exception mehr zu befürchten. Hier wäre meiner Meinung nach auch eine Vorherprüfung angebracht, denn das ist ja ein ganz normaler Zustand und keine Ausnahme.  
  

> > Der FrontController kann aber auch mit einem null-Ergebnis "korrigieren". Vermutlich bringt es ihm keine Zusatzpunkte, wenn er die genaue Ursache des Locale-Holen-Misslingens kennt.  
> Da bin ich mir nicht so sicher. Wie gesagt, vielleicht hab ich das Prinzip noch nicht richtig verstanden. Aber wenn ich einen null-Wert bekomme, gebe ich die Verantwortung - im Gegensatz zu einer Exception - nicht zum Front-Crontroller zurück. Daher kann der dann auch nichts machen.  
  
Es kommt drauf an, was es für dich bedeutet, wenn keine Locale verfügbar ist. Daraufhin musst du deine Fehlerbehandlung (hier das Reagieren, wenn null zurückgegeben wird) ausrichten - also entweder hier reagieren oder das in einer anderen Ebene des Aufrufstacks behandeln, dann gibt es nur eine Benachrichtigung "nach oben", in welcher Form auch immer (nicht gefangene oder wieder ausgelöste Exception oder ein spezieller Rückgabewert).  
  

> Das war immer mein Gedanke, dass ich eine Exception so weit durchreichen lasse, bis sich eine Instanz meldet, die mit diesem Fehler umgehen kann. Im "schlimmsten" Fall wäre das also ein Exception-Handler, der eine Fehlerseite ausgibt.  
  
Ich würde mir da kein Prinzip auferlegen, sondern fallweise entscheiden, welches die beste Behandlungsweise und -ort ist.  
  
  
Lo!