2013-01-15 69 views
3

Effective Java Exceptions文章描述了CheckingAccount,其应该processCheck()。此外,它指出:异常与流量控制

代表应急响应中的Java是定义两个例外自然的方式,说StopPaymentExceptionInsufficientFundsException

对我来说,这听起来像是用于流量控制的异常。你能解释一下为什么可以在这里使用流量控制的检查异常吗? (或者这是否是流量控制的任何情况下)

+0

这是一个非常主观的问题。双方都有强烈的意见。 –

回答

6

异常,的particurarly检查品种,是完美的流量控制,但仅限于特殊箱子:如果异常是什么每次可预见的情况发生你运行的代码,因为它是“快乐的一天的场景”的一部分,只有这样你才会滥用它们。该教科书示例使用while (true)循环遍历数组,计数在ArrayIndexOutOfBounds以打破它。

另一个值得关注的例外情况是“带外信号”,在这种情况下,您已经占用了“快乐日”数据的方法返回值,并且您需要另一个卓越的频道来指示原因没有数据可以返回。在Haskell/Scala中,你会使用一个也许是 monad;在Java中,你最好坚持检查异常。

1

不使用流量控制异常。当你的服务器处于高负载状态时,抛出异常会让你的服务器变得更慢更慢