Es gibt ein interessanter Beitrag hier in Bezug auf den anwendungsübergreifenden Kontrollfluss.
Nun, vor kurzem bin ich auf ein interessantes Problem gestoßen. Die Generierung des n-ten Wertes in einer potenziell (praktisch) endlosen rekursiven Folge. Dieser spezielle Algorithmus wird an dem Punkt, an dem er erfolgreich ist, mindestens 10-15 Stapelverweise tief sein. Mein erster Gedanke war, eine SuccessException auszulösen, die etwa so aussieht (C#):
class SuccessException : Exception
{
public string Value
{ get; set; }
public SuccessException(string value)
: base()
{
Value = value;
}
}
Dann machen Sie etwas Ähnliches:
try
{
Walk_r(tree);
}
catch (SuccessException ex)
{
result = ex.Value;
}
Dann wanderten meine Gedanken wieder hierher, wo ich immer wieder gehört habe, dass man niemals Ausnahmen für die Flusskontrolle verwenden soll. Gibt es jemals eine Ausrede? Und wie würden Sie so etwas strukturieren, wenn Sie es einführen würden?