例外情况,特别是检查的变种,非常适合流量控制,但仅限于特殊情况:如果异常是每次运行代码时可预测的事件,因为它是"快乐日情景"的一部分,只有这样才是你滥用他们.教科书的例子是使用while (true)循环迭代数组,依靠ArrayIndexOutOfBounds它来打破它.
由例外处理的另一个问题是"带外信令",您已经占用了方法的"快乐日"数据的返回值,并且您需要另一个区分信道来表示没有数据的原因回来.在Haskell/Scala中你会使用Maybe monad; 在Java中,你最好坚持使用已检查的异常.