Autor Beitrag
Motz
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Fr 16.03.12 15:59 
•ich habe eine Methode A() mit einer for-Schleife, die ein Array durchläuft und auf die Elemente mehrere Methoden in verschiedener Verschachtelung aufruft
•B(), C(), D() und E() sollen in bestimmten Situationen die aktuelle Methode A() komplett abbrechen und neu starten
•es handelt sich also um eine Form von Rekursion

Beispiel:

A() -> B()
A() -> B() -> C()
A() -> B() -> D()
A() -> B() -> D() -> E()

Ich komme hierbei nur auf Exceptions, denn A() soll ja abgebrochen und danach neu aufgerufen werden. Kann man aus einem
Catch-Block einer Exception auch direkt eine übergeordnete Methode abbrechen und neu starten? Sonst müsste man ja jede Methode mit einem try-catch-Block versehen und die Exception weiterleiten bis zu A()… was den Code ja unübersichtlich macht.

Exceptions sollen ja eigentlich auch nur für Fehler verwendet werden und nicht für den Programmablauf. Wie würdet Ihr so etwas verwirklichen? Denn Sprungmarken gibt es in C# ja nicht!
PantherX
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 43
Erhaltene Danke: 7

Win XP, Win 7
Delphi 7, VS2010 C#
BeitragVerfasst: Fr 16.03.12 16:04 
Hallo Motz,

ich hoffe ich habe dein Problem richtig verstanden.

Wie wäre es, den Methoden einen boolschen Rückgabewert zu geben.
In die jeweiligen Catch Blöcke könntest du dann False zurückgeben und somit
angeben ob eine Funktion erfolgreich war oder nicht. Dann hast du auch nur einmal die Exception und der Rest wird sauber abgearbeitet.

Beste Grüße

_________________
Grafische Oberflächen sind wie U-Boote. Kaum macht man ein Fenster auf, fangen die Probleme an!
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 16.03.12 18:22