dedlfix: Verschachtelte Klassen + error handling

Beitrag lesen

echo $begrüßung;

Wir mitteile ich der Server Klasse, einen dieser Fehler?
Wie lößt man das sauber und vorallem richtig?

An dieser Stelle gibt es weder "sauber" noch "richtig", nur verschiedene Meinungen, auch von Personen, die man als "gleichwertig" einstufen kann. Alle Seiten können nachvollziehbar ihre Gründe für oder gegen eine der Weisen darlegen, ohne dass man von neutralem Standpunkt aus eine Weise sehen kann, die entschieden mehr Vorteile bietet. Letztlich bleibt es deine Entscheidung, denn du musst damit leben.

Zunächst wäre zu definieren, was als Fehler und was als normales "zwar erfolgreich, aber kein Ergebnis" ist.

Werfe ich eine Exception? Gebe ich nur "false" zurück? (Wobei ich wissen muss, *was* aufgetreten ist).

Wenn es kein Fehler, keine Ausnahmesituation ist, sollte keine Exception herhalten. "Teilstring im String nicht gefunden" kann als false oder als -1 signalisiert werden. Das ist im Allgemeinen keine Ausnahmesituation. Es wäre dann eine, wenn an dieser Stelle aufgrund der Programmlogik ein positives Ergebnis zwingend notwendig ist. Es ist also immer eine Einzelfallentscheidung, ob eine Ausnahme oder kein Ergebnis vorliegt.

Oder gebe ich einen Zahlenwert von -1 bis -100 für die verschiedenen Fehler zurück?

Wenn der negative Zahlenwert innerhalb eines erlaubten Ergebnisses ist, dann ist das natürlich kein gehbarer Weg.

Ansich kapiere ich das allgemein, das Rückgeben von *bekannten* Fehlern, wo *bekannte* Routinen vorhanden sind, zwischen den einzelnen Klassen noch nicht.

Ein "bekannter" Fehler wäre, dass der Verbindungsaufbau zu einem externen Server fehlschlagen kann. Es wäre aber eine Ausnahmesituation, denn normalerweise wird wohl von einer erfolgreichen Verbindung ausgegangen. Sämtliche von dieser Verbindung abhängige nachfolgende Programmlogik kann nun nicht mehr ausgeführt werden. Ob diese Entscheidungen in if- oder Exception-Blöcken am besten aufgehoben sind, liegt im Auge des Betrachters.

echo "$verabschiedung $name";