控制流程的例外情况

Mat*_*ley 3 algorithm exception control-flow data-structures

关于跨应用程序的控制流程,这里一个有趣的帖子.

好吧,最近,我遇到了一个有趣的问题.在潜在(实际上)无限递归序列中生成第n个值.这个特定的算法将在其成功的深度处至少10-15个堆栈引用.我的第一个想法是抛出看起来像这样的(C#)的SuccessException:

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

    public SuccessException(string value)
        : base()
    {
        Value = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后做这样的事情:

try
{
    Walk_r(tree);
}
catch (SuccessException ex)
{
    result = ex.Value;
}
Run Code Online (Sandbox Code Playgroud)

然后我的思绪在这里徘徊,在那里我一遍又一遍地听到从未使用Exceptions进行流量控制.有没有借口?如果你要实现它,你将如何构建这样的东西呢?

Mit*_*ers 5

在这种情况下,我会查看你的Walk_r方法,你应该有一些返回值的东西,抛出一个异常来表示成功,这不是一种常见的做法,至少对看到代码的人来说非常困惑.更不用说与异常相关的开销.