我继承了一个处理请求的java应用程序,如果它确定某个请求应该被取消,就会抛出一个异常。对于以前的开发人员来说,例外情况很方便,因为他们是退出不再适用的逻辑树的一种简单方法(是转向),并且它将堆栈跟踪打印到日志中,这是一个很好的信息。这似乎是论坛和博客上的关于异常不应该用于流量控制的问题,超过一半的请求被取消,所以它们绝对不是特殊情况。一个论点是性能,这不适用,因为我们的例外代码运行速度足够多年。另一个论点是,它的转变并不明确,我同意这一点。我的问题是:什么是替代方案。我唯一能想到的是如果处理应该继续,每个方法返回true,否则返回false。这似乎是它会膨胀巨大我的代码更改此:什么是流量控制例外的替代方案?
checkSomething();
checkSomethingElse();
到这一点:
boolean continueProcessing = false;
continueProcessing = checkSomething();
if (!continueProcessing) {
return false;
}
continueProcessing = checkSomethingElse();
if (!continueProcessing) {
return false;
}
然后呢,如果该方法应该返回的东西?任何指导都会很棒。我真的很想观察任何“最佳实践”。
更新:
我也许应该在第一时间提到另一个位是一个请求被取消的时间超过50%,并不意味着事情没有去正确的,这意味着要求WASN终究不需要。
我认为*检查*异常描述意图完美(而不是GOTO)。我没有看到这个问题。确保定义你自己的异常,并提供足够的具体信息来处理你的特例(多个catch块对此很好)。 – laher 2011-04-26 23:57:20
正确使用goto没有任何问题。唯一的事情是,大多数时候,他们没有得到恰当的使用。 – Anonymoose 2011-04-27 00:43:41
不要为了改变而改变任何东西。它的工作原理,并行之有效 - 让它成为现实。抽象的想法很好,但工作代码更好。 – 2011-04-27 01:16:06