这里有一篇与跨应用程序控制流相关的有趣帖子(链接)。
最近,我遇到了一个有趣的问题。如何生成可能(实际上)无限递归序列中的第n个值。在成功时,这个特定算法将至少有10-15个堆栈引用。我的第一个想法是抛出一个类似于以下C#代码的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;
}
我的思绪回到这里,我一遍又一遍地听到不要使用异常来控制流程。是否有任何理由可以使用异常?如果你要实现类似这样的功能,你会如何构建它的结构?