小编典典

控制流的例外

algorithm

好吧,最近,我遇到了一个有趣的问题。在潜在的(实际上)无限递归序列中生成第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;
}

然后我的思绪回到了这里,我一遍又一遍地听到,从来没有将异常用于流控制。有没有借口?如果要实施,您将如何构建这样的结构?


阅读 317

收藏
2020-07-28

共1个答案

小编典典

在这种情况下,我将查看您的Walk_r方法,您应该拥有一个返回值的东西,引发异常以指示成功,这不是常见的做法,并且至少会使看到该代码的任何人感到困惑。更不用说与异常相关的开销了。

2020-07-28