如何正確的使用Java中的異常
最近在使用Java實現一個DBMS。一個小組三個人,有一個家伙很能寫代碼。但是他寫的代碼真的讓人非常困惑。我拿到代碼一看,幾乎每一個函數都要throws Exception。這真的讓人不知所措。他的理由是為了調試方便,我覺得簡直難以理解,還說以后會改成具體的Exception,這也很可笑,現在他寫了七八千行了,早就懶得回去把每個Exception改成具體類型了。拋出的是Exception,是所有異常的基類型,這讓人怎么處理呢?現在項目收尾了,他停止寫代碼了,我打算把他留下的爛攤子整理一下,發現這個問題還真的是很難辦。我發現,我也不知道應該怎么使用Exception。我僅僅知道,他的寫法不對。
看了《高質量Java程序設計》第一章就是講異常。雖然有了些初步的概念,但是還是很模糊,很迷惑,到底該怎么處置?
書中給出了幾條建議:
1、慎用Exception,用代碼的反匯編結果說明了,如果加入了異常處理,生成的代碼運行時間幾乎翻倍。
2、根據時間頻度決定是否使用異常。
3、用不需查異常強化方法約定。
4、用Error表示系統級異常。
但是在具體應用時候,我還有不明白的。一級一級throws Exception的原因何在?如何判斷應該在哪一層將異常給捕獲了?
一級一級地向外throws,但是不捕獲,會不會損壞效率?
我們的程序里面用到IO操作,會扔出來IOException。怎么決定在哪一層處理它呢?