Здесь есть интересный пост об этом, касающийся потока управления между приложениями.
Ну, недавно я столкнулся с интересной проблемой. Генерация 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;
}
Затем мои мысли блуждали обратно сюда, где я слышал снова и снова, чтобы никогда не использовать исключения для управления потоком. Есть ли оправдание? И как бы вы структурировали что-то подобное, если бы вы это реализовали?