2014-01-06 52 views
1

我正在閱讀此代碼審查問題here和由BalusC教程。在那裏我發現異常類被擴展了。爲什麼要在DAO中擴展異常?

它的需求是什麼?我沿着client layer should not know SQLExecption的方向讀了一些東西,但我不確定我是否理解它。

你能說明爲什麼要制定專門的例外嗎?如果我的DAO方法沒有throws並且客戶端代碼在try-catch中,該怎麼辦?

+2

猜猜以下的壞處:拋出新的OhShitSomethingBadHappenedButIWontTellYouSpecificlyWhatException()',將其應用於您的問題,然後刪除您的問題。 –

+1

@JarrodRoberson這真是一個可怕的消息給客戶:) –

+0

這是幽默的好用處,以獲得點! –

回答

6

因爲DAO可能是今天扔明天SQLException,如果你想改變DAO層寫入文件時,它可能會導致FileNotFoundException,所以躲在底層的東西,你展示給你的客戶什麼事情他們(定製業務明智的除外)

+2

非常簡潔,重點突出!在提出簡單的問題之前,我應該再投入更多努力。 –

+1

我進一步說,它不應該拋出任何'CheckedException'子類期! –