Hallo,
wenn ich an einem Skript schreibe, wo via PDO auf eine MySQL Datenbank zugegriffen wird, soll ja mit try-catch Blöcken gearbeitet werden, um Fehler abzufangen.
Wenn ich mit dem Schreiben einer Anwendung fertig bin, alles funktioniert und der Code nicht mehr verändert wird, spricht dann irgend etwas dagegen, den catch-Block zu entfernen und dieses Procedere nur in der Entwicklungsphase einzusetzen? Oder gibt es ein Argument dafür, diesen "Notausstieg" dauerhaft im Skript zu belassen?
Hallo erstmal.
Ich möchte hier noch etwas ergänzen: Exceptions sind - wie der Name sagt - Ausnahmen, die du behandeln kannst, aber nicht musst. Je nach Sprache bist du möglicherweise leider gezwungen, Exceptions zu behandeln z.B. bei Checked Exceptions in Java. In diesem Fall hast du entweder die Möglichkeit, die Exception sofort wieder zu schmeißen, oder etwas wie sneaky rethrow zu verwenden.
Generell sei gesagt: Exceptions sind eigentlich dafür, dass man sich NICHT um sie kümmern muss. Sonst wären es Rückgabewerte der aufgerufenen Funktion. Soll heißen: entweder der Programmierer (also du), weiß ganz genau, wie er mit dem Auftreten einer Exception umzugehen hat, oder er weiß es nicht.
Wenn er es weiß, sollte er die Exception mit try/catch fangen und reagieren. In deinem Fall wäre das also beispielsweise im Falle eines fehlgeschlagenen Verbindungsaufbaus oder bei einem fehlerhaften Absetzen einer Aktion (z.B. Insert oder Update) weil die Datenbank z.B. down ist, könntest du das per try/catch diese Exception abfangen und dann im catch Block eine neue Verbindung zu einer Backup-Datenbank aufmachen und mit dieser weiterarbeiten. Das wäre _eine_ Möglichkeit.
Wenn du aber - und so liest es sich - keinen "Backup-Plan" hast und das Programm in dem Fall einfach nen Fehler ausspucken und abbrechen soll, dann solltest du gar kein try/catch verwenden. Genau dafür sind Exceptions nämlich da: wenn du an dieser Stelle nicht weißt, wie du mit dieser Ausnahmesituation umzugehen hast, dann wird sie sofort weiter an die nächst höhere aufrufende Funktoion weitergereicht. Solange, bis am Ende beispielsweise bei Java die JVM die Exception handelt und das Programm mit einer entsprechenden Fehlermeldung abbricht. Es ist dir also geraten, auf der höchsten Ebene deines Programms alle Exceptions abzufangen und darauf zu reagieren, indem du den Fehler loggst, eine Meldung an den Nutzer ausgibst und das Programm kontrolliert beendest.
Wichtig ist übrigens, dass es z.B. bei Java einige Typen von Fehlern (Typ Error) und Exceptions gibt (beide gehören zu den sogenannten Throwables), die teilweise kaum zu handeln sind, z.B. OutOfMemoryError. Solche solltest du am besten nicht abfangen, außer du weißt, was du tust.