找到搜索结果时抛出异常

时间:2011-10-26 15:48:57

标签: java search recursion

我最近在BS的c ++书中读到,可以立即抛出递归搜索的结果立即从整个调用堆栈返回。 在java中也可以这样做吗?我知道这是可能的,但它是否气馁并被认为是一种难闻的气味? 它比使用'found'标志更容易并且每次都检查它。

3 个答案:

答案 0 :(得分:3)

我肯定会去寻找旗帜。当然你可以使用Exception来完成它,但它并不意味着控制具有异常的代码通量。例外情况不是免费的,而对旗帜的简单检查将花费O(1)。

答案 1 :(得分:2)

旗帜确实是更好的选择。

应该只使用例外,处理意外行为,而不是控制程序的工作流程。请记住,抛出异常将使所有调用方法都明确地处理它,这将使您的代码很多比它需要的更多耦合。

答案 2 :(得分:1)

你绝对应该使用旗帜。例外设计用于异常条件。它们不应该是返回码。此外,抛出异常会导致相当大的成本,而检查标记是一种非常快速的操作。