前面已經(jīng)多次提到過Checked Exception的好處。
在實際工作中,已經(jīng)證實了這個問題。
當然,問題的由來和結(jié)構(gòu)的設(shè)計有一定的關(guān)系。
A Module 調(diào)用 => B Module 調(diào)用=> C Module。
而異常處理已經(jīng)深深的夾雜著這樣的代碼結(jié)構(gòu)中。
用戶直接使用A,但是會在C處才會出現(xiàn)問題。
這時候C需要拋出一個異常, 但是附加關(guān)鍵要求:
此異常消息明確無誤,能夠清晰地看出異常出現(xiàn)的原因
(在不重啟的情況下,以便用戶解決問題)
剛開始的代碼中,直接就在C處跑出異常。
后來隨著結(jié)構(gòu)的復雜,加入了模塊D (其位置和B相同)
甚至在最外層加入D (和A并列)
這就導致C處的異常消息的問題逐漸浮現(xiàn)出來。
原有在C處就能直接決定的Message現(xiàn)在不能在C處就確認(因為有多個進入C的入口)
此時,只能將異常消息的決定權(quán)往上一級進行轉(zhuǎn)移。
。。。。。。。。。。。。。
UnChecked Exception對于這樣的轉(zhuǎn)移來說 太不能友好的支持了。
在反駁上述內(nèi)容的時候,請帶著這樣的觀點:
好的東西,可以在很別扭的情況下,也可以讓別人輕松的達到和諧。