有这里有一个有趣的帖子关于这一点,与跨应用程序控制流有关。
嗯,最近,我遇到了一个有趣的问题。在潜在(实际上)无限递归序列中生成第 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;
}
然后我的思绪又回到了这里,我一遍又一遍地听到不要使用异常来进行流量控制。有借口吗?如果你要实现这样的东西,你会如何构建它?
在这种情况下,我将查看您的 Walk_r 方法,您应该有一些返回值的东西,抛出异常来指示成功,这不是常见的做法,并且至少会让看到代码的任何人感到非常困惑。更不用说与异常相关的开销了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)