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