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