Исключения для потока управления

Естьинтересный пост здесь об этом, по отношению к потоку управления между приложениями.

Ну, недавно яМы столкнулись с интересной проблемой. Генерация n-го значения в потенциально (практически) бесконечной рекурсивной последовательности. Этот конкретный алгоритм будет по крайней мере в 10-15 стековых ссылок глубоко в точке, где он будет успешным. Моей первой мыслью было создать исключение SuccessException, которое выглядело примерно так (C #):

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

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

Затем сделайте что-то вроде этого:

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

Тогда мои мысли блуждали сюда, где ямы слышали снова и снова, чтобы никогда не использовать исключения для управления потоком. Есть ли оправдание? И как бы вы структурировали что-то подобное, если бы вы это реализовали?

Ответы на вопрос(7)

Ваш ответ на вопрос