Wyjątki dla przepływu kontroli

Jestciekawy post tutaj o tym w odniesieniu do przepływu kontroli między aplikacjami.

Niedawno natknąłem się na ciekawy problem. Generowanie n-tej wartości w potencjalnie (praktycznie) nieskończonej sekwencji rekurencyjnej. Ten konkretny algorytm BĘDZIE w co najmniej 10-15 odniesieniach do stosu głęboko w punkcie, w którym się powiedzie. Moją pierwszą myślą było rzucenie wyjątku SuccessException, który wyglądał mniej więcej tak (C #):

class SuccessException : Exception
{
    public string Value
    { get; set; }

    public SuccessException(string value)
        : base()
    {
        Value = value;
    }
}

Następnie wykonaj coś takiego:

try
{
    Walk_r(tree);
}
catch (SuccessException ex)
{
    result = ex.Value;
}

Potem moje myśli powróciły tutaj, gdzie wielokrotnie słyszałem, aby nigdy nie używać Wyjątków do kontroli przepływu. Czy jest kiedykolwiek wymówka? A jak byś zorganizował coś takiego, gdybyś go wdrożył?

questionAnswers(7)

yourAnswerToTheQuestion