关于跨应用程序的控制流程,这里有一个有趣的帖子.
好吧,最近,我遇到了一个有趣的问题.在潜在(实际上)无限递归序列中生成第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; }
然后我的思绪在这里徘徊,在那里我一遍又一遍地听到从未使用Exceptions进行流量控制.有没有借口?如果你要实现它,你将如何构建这样的东西呢?
在这种情况下,我会查看你的Walk_r方法,你应该有一些返回值的东西,抛出一个异常来表示成功,这不是一种常见的做法,至少对看到代码的人来说非常困惑.更不用说与异常相关的开销.