Du denkst hier, glaube ich, zu sehr an RFC-FuBas. Wie black_adept schon sagte, gibt es durchaus auch "interne" Bausteine.c oco hat geschrieben:- Definition von Ausnahmeparametern sollten in Funktionsbausteinen immer zwingend sein oder kann es auch sein, dass es in der gerufenen
Einheit gar keine Fehlerkonstellation auftreten kann?
M.E.: kann doch immer ein Abbruch erfolgen oder keine Connection vorhanden sein. Daher sollten Funktionsbausteine immer Ausnahmeparameter haben.
Früher war ich auch der Meinung das man die Ausnahmebehandlung gleich mal machen sollte, aber mittlerweile bin ich davon (auch durch anraten eines neuen Kollegen) wieder davon abgekommen. Man läuft einfach zu sehr in die Gefahr einen "silent" catch zu programmieren und damit vorallem in der ersten Entwicklungsphase Fehler zu übersehen. Sobald man dann die Problemfelder erkannt und identifiziert hat, spricht nichts dagegen Fehler abzufagen.c oco hat geschrieben:- bei Klassenbasierten Ausnahmen bin ich der Meinung, dass es keine leeren Ausnahmebehandlungen geben sollte. Oder kann es auch Fälle geben, in denen es gewollt ist, nicht auf einen Fehler zu reagieren und die weitere Verarbeitung fortzuführen?
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
c oco
Nochmal hierzu. Ein Ausnahmeparameter macht nur dann Sinn, wenn du im FuBa auch ein RAISE machst. Und das kannst du ja nur dann machen, wenn eine dir bekannte Ausnahmesituation vorliegt oder wenn du daran denkst, dass etwas bestimmtes schief gehen könnte. Wenn dir da aber nix einfällt kannst du auch kein RAISE machen --> keine Ausnahme.c oco hat geschrieben:- Definition von Ausnahmeparametern sollten in Funktionsbausteinen immer zwingend sein oder kann es auch sein, dass es in der gerufenen
Einheit gar keine Fehlerkonstellation auftreten kann?
Das hängt ganz stark davon ab, was die Ausnahme sagen soll. Ich habe z.B. eine Migration, wo wir diverse Umsetzungen machen - und leider kann die Umsetzung von Zeit zu Zeit auch einen korrekten initialen Wert zurückgeben. Was wir wissen müssen ist nur, ob die Umsetzung geklappt hat oder nicht, da im letzteren Fall alternative, komplexere oder zeitintensivere Methoden zur Umsetzung herangezogen werden müssen. Und eine nicht gefundene Umstzung wird dann in meinen Umsetzungklassen mittels RAISE EXCEPTION angekündigt. Insgesamt sieht dann die Kaskade der Umsetzungen etwa so aus.c oco hat geschrieben: bei Klassenbasierten Ausnahmen bin ich der Meinung, dass es keine leeren Ausnahmebehandlungen geben sollte. Oder kann es auch Fälle geben, in denen es gewollt ist, nicht auf einen Fehler zu reagieren und die weitere Verarbeitung fortzuführen?
Code: Alles auswählen.
TRY.
variable = me->umsetzungsroutine1( diverse Daten ).
RETURN. " Umsetzung gefunden --> Fertig
CATCH zcx_eigene_fehlerklasse.
ENDTRY.
TRY.
variable = me->umsetzungsroutine2( diverse Daten ).
RETURN. " Umsetzung gefunden --> Fertig
CATCH zcx_eigene_fehlerklasse.
ENDTRY.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
c oco