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ł?