Здесь есть интересный пост об этом, в отношении потока управления кросс-приложениями.
Хорошо, недавно я столкнулся с интересной проблемой. Генерация n-го значения в потенциально (практически) бесконечной рекурсивной последовательности. Этот конкретный алгоритм будет находиться по меньшей мере в 10-15 ссылках на стопки в той точке, в которой он преуспевает. Моя первая мысль заключалась в том, чтобы бросить SuccessException, который выглядел примерно так (С#):
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;
}
Затем мои мысли побрели сюда, где я снова и снова слышал, чтобы никогда не использовать Исключения для управления потоком. Есть ли оправдание? И как бы вы структурировали что-то вроде этого, если бы вы его реализовали?