Modernes Exception-Handling Teil 2 - Hinter den Kulissen
-
Auch wenn eine sehr gute Exception geworfen wird, wird sie evtl. nicht zwischen database_a und database_b unterscheiden wenn es zwei Connections sind die zurselben Art von DB gehen, aber sind natürlich alles konstruierte Beispiele, wenn die Exception gut genug ist, spricht natürlich absolut nichts dagegen den catch-Block so weit außen wie möglich zu machen.
MfG SideWinder
-
so ist es. Es kommt ja auch darauf an, was mit der Exception gemacht werden soll. Ich hatte z.B. mal ein Programm für einen Datentransfer von Oracle nach MySQL zu entwickeln, da kam es nur darauf an, daß dieses Programm bei nicht Erreichbarkeit einer der beiden (egal welche) in einer Warteschleife weiterläuft bis die Verbindung wieder steht.
Schönen Sonntag!
-
Die Aussage ist wohl nur, wenn du innerhalb einer Methode einen try/catch-Block machst, dann ist es best practice ihn so klein wie möglich zu machen. Dass du weit außen ein einziges try/catch rund um app.Run() hast, ist davon nicht betroffen.
MfG SideWinder
-
Ich fahre da zwei Philosophien (je nach Projekt)... Entweder, alles "nach oben" weitergeben - oder aber die try-catch-Blöcke so früh und klein wie möglich wählen, damit man a weiß, was die Exception verursachte, und b ggf. darauf entsprechend regieren kann, ohne das Programm zu beenden.
Ein von @_ro_ro vorgeschlagener Mischmasch führt meines Erachtens nur zu Chaos.
-
@omggg sagte in Modernes Exception-Handling Teil 2 - Hinter den Kulissen:
Ich fahre da zwei Philosophien (je nach Projekt)... Entweder, alles "nach oben" weitergeben - oder aber die try-catch-Blöcke so früh und klein wie möglich wählen, damit mit man a weiß, was die Exception verursachte, und b ggf. darauf entsprechend regieren kann, ohne das Programm zu beenden.
Ein von @_ro_ro vorgeschlagener Mischmasch für meines Erachtens nur zu Chaos.
Ich habe gar nichts vorgeschlagen. Ich finde nur, daß der Artikel in sich widersprüchliche Aussagen trifft.
Im übrigen ist meine Frage immer noch nicht beantwortet. MFG
-
@_ro_ro sagte in Modernes Exception-Handling Teil 2 - Hinter den Kulissen:
@omggg sagte in Modernes Exception-Handling Teil 2 - Hinter den Kulissen:
Ich fahre da zwei Philosophien (je nach Projekt)... Entweder, alles "nach oben" weitergeben - oder aber die try-catch-Blöcke so früh und klein wie möglich wählen, damit mit man a weiß, was die Exception verursachte, und b ggf. darauf entsprechend regieren kann, ohne das Programm zu beenden.
Ein von @_ro_ro vorgeschlagener Mischmasch für meines Erachtens nur zu Chaos.
Ich habe gar nichts vorgeschlagen. Ich finde nur, daß der Artikel in sich widersprüchliche Aussagen trifft.
Im übrigen ist meine Frage immer noch nicht beantwortet. MFG
Kein Grund, aggressiv zu werden oder zu eskalieren ... Ich habe nur den Subtext gedeutet.
-
@_ro_ro sagte in Modernes Exception-Handling Teil 2 - Hinter den Kulissen:
Frage zum Artikel, da steht, daß man nicht den ganzen Code in einen try-Block setzen soll. Warum nicht?
@_ro_ro sagte in Modernes Exception-Handling Teil 2 - Hinter den Kulissen:
Ich habe gar nichts vorgeschlagen. Ich finde nur, daß der Artikel in sich widersprüchliche Aussagen trifft.
Welche Sätze meinst du denn genau? Zumindestens in diesem (Teil-)Artikel finde ich keine Aussagen bzgl. der Vermeidung eines globalen
try...catch
-Handlers.
-
Da der Thread bzw der Artikel ursprünglich mal "Modernes Exception Handling" hieß; in modernem C++ gibt es auch andere Möglichkeiten der Fehlerbehandlung, z.B. mit
std::optional
oder noch neuerstd::except
. Hier ein Artikel dazu: https://devblogs.microsoft.com/cppblog/cpp23s-optional-and-expected/
-
die Erfahrung daß man mit Exceptions seine Fehlerbehandlung vereinfachen kann teile ich auf jeden Fall. Darüber habe ich auch schon vor ein paar Jahren Artikel geschrieben.
MFG
-
@omggg Es gibt kein Modernes Exception Handling, da keine Ausnahmen stattfinden. Wenn doch ist was anderes unbrauchbar.