T-Rex: Wann wirft man eine Exception

Beitrag lesen

Du kannst bestimmte Situationen vorhersehen und sie trotzdem nicht beeinflussen. Syntaxfehler im Statement kann man vermeiden. Dass ein DBMS jedoch grad mal Pause macht, lässt sich nicht eliminieren. Du kannst lediglich mit entsprechendem Aufwand für eine höhere Verfügbarkeit sorgen, aber 100% wirst du nicht erreichen können. Das gleiche gilt für alle anderen externen Dienste, die man anzusprechen gedenkt.

Also ich finde den Weg den Dennis mir gezeigt hat genial. Man kann alle Objekte, Methoden und Funktionen mit Exceptions verseuchen. Wenn der Aufrufer eine Idee hat wie der Fehler abgefangen werden könnte, dann kann er einen Try und Catch block benutzen, ansonsten wird ein Default Weg gegangen. Und gerade bei den Datenbank Zugriffen ist das eine feinde Sache. Denn seien wir mal ehrlich, die meisten Datenbank Zugriffe sind essentiell für das Programm. Wenn man gerade auf dem Ebay Artikel xyz steht und die Daten nicht aus der Datenbank geholt werden können nützt mir auch kein Plan B.

Und genau hier war mein Problem. Wenn ich in die Objekte, welche einen Datenbank Zugriff haben, eine Exception einbaue, dann muss die (so dachte ich) immer in ein try catch block. Und das würde den Code gigantisch aufblähen, wobei ich im catch block immer sowas in der art wie $objException->log(); gesehen hab.

Wenn ich da an meinen alten Arbeitgeber denke. Der hatte ein System komplett ohne Exceptions und hat auch nicht geprüft ob die Datenbank erreichbar ist oder nicht. Generell sind in dem System etliche Sicherheitslücken drin. Ausfälle hat er wahrscheinlich nie mitbekommen (außer der komplette Server streikte, da helfen aber auch keine Exceptions mehr). Und trotzdem hat er ein System verkauft welches, wenn man alle Kunden zusammen nimmt, 3 Millionen Euro im Monat generiert. Bei 3 Millionen verzichte ich auch auf Exceptions :D.

Achja nebenbei was ist finally? Wenn das bedeutet das eine Methode bei einer Vererbung nicht mehr überschrieben werden darf, dann heißt es in PHP schlicht final.

Gruß
Dennis Tatoo Träger
T-Rex