給JAVA設計開發新手的一些建議和意見(2)
給JAVA設計開發新手的一些建議和意見(2)[@more@] 【處理好你的異常】
-----------------
異常處理是Java程式設計中非常重要的一個部分。建議在使用異常之前閱讀或者。
下面從書中摘出幾條建議:
*絕對不要忽略異常
*千萬不要隱藏異常***
*僅在不正常的情況下使用異常
*對可恢復的情況使用可檢查異常,對程式錯誤使用執行時異常(RunTimeException)
*給方法引發的異常做文件
*在詳細資訊裡面包括失敗捕獲資訊
*使用finally避免資源洩漏
*。。。。
在這裡特別提出的是,在開發中要特別處理NULL的情況,否則經常引發NullPointException異常,在Java裡這是一個最令人頭疼的異常了。
如果你的程式因為一個NULL值,而報了幾十個NullPointException的話,不但得讓人煩死,而且還非常難以找到錯誤所在。所以在Java中一定要注意這個問題。
如果你的函式不允許Null值,那麼可以截獲它,丟擲一個異常,或者給客戶更友好的提示,難道不好嗎?
讓我們來看一個例子:
public String getName(User aUser)
{
//如果aUser為Null,會發生什麼情況
return aUser。getName();
}
很明顯,如果引數為Null,就會丟擲異常。應該改為:
public String getName(User aUser)
{
if(null=aUser)
{
return "";
}
else
{
return aUser。getName();
}
}
或者你要求引數不能為空,還可以丟擲一個異常,強制使用者不能傳入空值。
還有經常被忽略的是RunTimeException和普通異常的區別,在Java中,這是一個特殊的異常類,程式中如果遇到這個異常,使用者可以不截獲它,而如果是其他的普通異常,就不許要截獲它。我們的程式碼經常這麼寫:
try
{
//your code here
}
catch(Exception e)
{
//do warn
}
這樣寫的話,就截獲了所有異常,當然也包括了RunTimeException。 在很多情況下,這是不合適的處理方式,我們只應截獲必要的異常,而應該忽略RuntimeException。
關於RunTimeException,在Spring中還有更好的利用方式,建議閱讀Spring框架中在事務中對異常的處理程式碼,例如對Jdbc丟擲的SqlException的轉換。
關於異常處理,我提出幾點建議:
*捕獲異常而且再次丟擲時要包含原來的異常資訊
*不要忘了RunTimeException,除非必要,否則不要用catch(Exception e)的方式捕獲所有異常。
*不要用異常做流程控制,異常的效能代價比較高昂。(對此,可能有人不同意。此處不詳細討論)
*不要把異常處理都拋給別人,本函式有能力處理的就不要丟擲。
在此建議讀者詳細閱讀或者。
我們可以看到,這個類的主要目的是得到計算結果,所以正確的介面應該類似:
public interface Counter
{
int getResult();
}
但是很多情況下,經常是這樣的介面:
public interface Counter
{
int getResult();
int getN1();
int getN2();
void setN1(int n1);
void setN2(int n2);
}
我們想一想,這樣做有2個後果:
1。除了getResult之外,其他的函式我們根本用不到,所以是多餘的。
2。如果我們要自己實現一個Counter,如果介面中僅僅定義了getResult,我們僅僅需要實現它就可以了。我們自己的類可能是多個數運算,有乘除加減等等各種運算,引數也有可能是一些陣列。但是如果按照第二種方法宣告介面的話,我們就必須實現後面的四個方法,如果這樣的話,實現這樣東西不僅沒用,而且浪費時間。我們恐怕要大聲罵娘了吧。
所以,介面有好的作用,但是不要濫用。
■ 如果你的介面永遠只有一個類實現,那麼可能就沒有必要用介面。
■ 你的介面只需要宣告別人用到的函式即可。
-----------------
異常處理是Java程式設計中非常重要的一個部分。建議在使用異常之前閱讀或者。
下面從書中摘出幾條建議:
*絕對不要忽略異常
*千萬不要隱藏異常***
*僅在不正常的情況下使用異常
*對可恢復的情況使用可檢查異常,對程式錯誤使用執行時異常(RunTimeException)
*給方法引發的異常做文件
*在詳細資訊裡面包括失敗捕獲資訊
*使用finally避免資源洩漏
*。。。。
在這裡特別提出的是,在開發中要特別處理NULL的情況,否則經常引發NullPointException異常,在Java裡這是一個最令人頭疼的異常了。
如果你的程式因為一個NULL值,而報了幾十個NullPointException的話,不但得讓人煩死,而且還非常難以找到錯誤所在。所以在Java中一定要注意這個問題。
如果你的函式不允許Null值,那麼可以截獲它,丟擲一個異常,或者給客戶更友好的提示,難道不好嗎?
讓我們來看一個例子:
public String getName(User aUser)
{
//如果aUser為Null,會發生什麼情況
return aUser。getName();
}
很明顯,如果引數為Null,就會丟擲異常。應該改為:
public String getName(User aUser)
{
if(null=aUser)
{
return "";
}
else
{
return aUser。getName();
}
}
或者你要求引數不能為空,還可以丟擲一個異常,強制使用者不能傳入空值。
還有經常被忽略的是RunTimeException和普通異常的區別,在Java中,這是一個特殊的異常類,程式中如果遇到這個異常,使用者可以不截獲它,而如果是其他的普通異常,就不許要截獲它。我們的程式碼經常這麼寫:
try
{
//your code here
}
catch(Exception e)
{
//do warn
}
這樣寫的話,就截獲了所有異常,當然也包括了RunTimeException。 在很多情況下,這是不合適的處理方式,我們只應截獲必要的異常,而應該忽略RuntimeException。
關於RunTimeException,在Spring中還有更好的利用方式,建議閱讀Spring框架中在事務中對異常的處理程式碼,例如對Jdbc丟擲的SqlException的轉換。
關於異常處理,我提出幾點建議:
*捕獲異常而且再次丟擲時要包含原來的異常資訊
*不要忘了RunTimeException,除非必要,否則不要用catch(Exception e)的方式捕獲所有異常。
*不要用異常做流程控制,異常的效能代價比較高昂。(對此,可能有人不同意。此處不詳細討論)
*不要把異常處理都拋給別人,本函式有能力處理的就不要丟擲。
在此建議讀者詳細閱讀或者。
我們可以看到,這個類的主要目的是得到計算結果,所以正確的介面應該類似:
public interface Counter
{
int getResult();
}
但是很多情況下,經常是這樣的介面:
public interface Counter
{
int getResult();
int getN1();
int getN2();
void setN1(int n1);
void setN2(int n2);
}
我們想一想,這樣做有2個後果:
1。除了getResult之外,其他的函式我們根本用不到,所以是多餘的。
2。如果我們要自己實現一個Counter,如果介面中僅僅定義了getResult,我們僅僅需要實現它就可以了。我們自己的類可能是多個數運算,有乘除加減等等各種運算,引數也有可能是一些陣列。但是如果按照第二種方法宣告介面的話,我們就必須實現後面的四個方法,如果這樣的話,實現這樣東西不僅沒用,而且浪費時間。我們恐怕要大聲罵娘了吧。
所以,介面有好的作用,但是不要濫用。
■ 如果你的介面永遠只有一個類實現,那麼可能就沒有必要用介面。
■ 你的介面只需要宣告別人用到的函式即可。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10901326/viewspace-965650/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 給JAVA設計開發新手的一些建議和意見(4)Java
- 給JAVA設計開發新手的一些建議和意見(3)Java
- 給JAVA設計開發新手的一些建議和意見(1)Java
- 給程式設計師新手的一些建議程式設計師
- 陳皓:給程式設計師新手的一些建議程式設計師
- 我給程式設計師新手寫簡歷的一些建議程式設計師
- 我給所有新手程式設計師的建議程式設計師
- 給新手程式設計師的幾點建議程式設計師
- 給移動應用開發新手的6個建議
- java程式設計的一些建議Java程式設計
- C++程式碼書寫規範——給新手程式設計師的一些建議C++程式設計師
- 程式設計師也要養生,給DBA和IT同行的一些建議程式設計師
- 年終工作總結:給新手程式設計師的幾個建議程式設計師
- 給新手學習MySQL的建議MySql
- 給Android程式設計師的一些面試建議Android程式設計師面試
- 給Python初學者的一些程式設計建議Python程式設計
- 1024 寫給程式設計師的一些建議程式設計師
- 給予Java初學者的建議(JavaWeb/後臺開發)JavaWeb
- Linux新手如何入門?給新手的四點建議!Linux
- #給java程式設計師的10條建議,吐血推薦!Java程式設計師
- PHPer面試指南-結語:寫給程式設計師的一些建議PHP面試程式設計師
- 一些Java開發人員在程式設計中常見的雷!Java程式設計
- 請大家給些建議和意見,關於動態內容,靜態釋出。
- 給迷茫的JAVA程式設計師一些中肯建議, 你還在虛度光陰嗎?Java程式設計師
- 給iOS開發者的Android開發建議iOSAndroid
- 從 Effective Java 總結一些有助安卓開發的建議Java安卓
- 如何高效學習Java?本文給你一些建議!Java
- 新手如何學習網頁設計?自我建議網頁
- 給未來精英程式設計師的建議程式設計師
- 雷軍給程式設計師的五點建議程式設計師
- 寫給未來程式設計師的建議程式設計師
- 給新程式設計師的10條建議程式設計師
- 給新人程式設計師的 10 點建議程式設計師
- 新手錦囊:Web前端開發小白的學習建議和路線圖Web前端
- 給服務端小白的一些建議服務端
- 學習Java程式設計的建議Java程式設計
- 《原神》——開放世界二次元遊戲的一些見解和建議二次元遊戲
- 給Linux系統運維新手的四點建議Linux運維