我有一个递归函数BaseClass
这依赖于一个protected virtual
函数的返回条件。
子类可能会错误地覆盖此函数并导致StackOverFlow
例外。最糟糕的是有一些缓慢的网络调用,并且异常不会很快发生(许多资源浪费了很长一段时间)。
我正在寻找一种方法来检查StackOverFlow
在基类的早期阶段以某种方式(也许使用Reflection
和当前的递归级别)。
任何想法 ?
您可以将一个简单的整数“深度”传递给递归函数,并在每次后续调用时递增它。如果它大于允许的最大深度,则立即抛出异常,而不是等到为时已晚并且可怕的StackOverflow
发生异常。
这种安全机制(增量计数器,检查它是否大得愚蠢)也可以派上用场while
循环中,一个小错误就可能导致无限循环,消耗大量 CPU。
在拥有许多用户的大型系统(例如网站)中,有时最好采取诸如递归和 while 循环之类的预防措施,因为后果可能远远超出一个网页或系统的一个用户。这不是漂亮的代码,纯粹主义者无疑会犹豫不决,但它很高效,具有防御性,而且很实用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)