例外与流量控制

时间:2013-01-15 10:47:01

标签: java exception

Effective Java Exceptions文章描述的CheckingAccountprocessCheck()。此外,它指出:

  

在Java中表示意外响应的自然方式是定义两个例外,例如StopPaymentExceptionInsufficientFundsException

对我而言,这听起来像用于流量控制的例外。你能解释为什么在这里使用流量控制的检查异常是可以的吗? (或者这不是流量控制的情况。)

2 个答案:

答案 0 :(得分:5)

异常,特别是已检查种类,非常适合流量控制,但仅适用于特殊情况:如果异常是可预测发生的每次< / em>你运行代码,因为它是“快乐日场景”的一部分,只有这样你才会滥用它们。教科书的示例是使用while (true)循环迭代数组,依靠ArrayIndexOutOfBounds来打破它。

由例外处理的另一个问题是“带外信令”,你已经占用了方法的“快乐日”数据的返回值,你需要另一个明确的信道来表明原因没有数据要返回。在Haskell / Scala中你会使用 Maybe monad;在Java中,你最好坚持使用已检查的异常。

答案 1 :(得分:0)

不要使用流量控制的例外。当您的服务器处于高负载状态时,抛出异常将使您的服务器更慢,更低