2013-01-15 93 views
3

Effective Java Exceptions文章描述了CheckingAccount,其應該processCheck()。此外,它指出:異常與流量控制

代表應急響應中的Java是定義兩個例外自然的方式,說StopPaymentExceptionInsufficientFundsException

對我來說,這聽起來像是用於流量控制的異常。你能解釋一下爲什麼可以在這裏使用流量控制的檢查異常嗎? (或者這是否是流量控制的任何情況下)

+0

這是一個非常主觀的問題。雙方都有強烈的意見。 –

回答

6

異常,的particurarly檢查品種,是完美的流量控制,但僅限於特殊箱子:如果異常是什麼每次可預見的情況發生你運行的代碼,因爲它是「快樂的一天的場景」的一部分,只有這樣你纔會濫用它們。該教科書示例使用while (true)循環遍歷數組,計數在ArrayIndexOutOfBounds以打破它。

另一個值得關注的例外情況是「帶外信號」,在這種情況下,您已經佔用了「快樂日」數據的方法返回值,並且您需要另一個卓越的頻道來指示原因沒有數據可以返回。在Haskell/Scala中,你會使用一個也許是 monad;在Java中,你最好堅持檢查異常。

1

不使用流量控制異常。當你的服務器處於高負載狀態時,拋出異常會讓你的服務器變得更慢更慢