設計迷蹤:給JAVA設計開發新手的一些建議和意見(二)
來源:互聯網
上載者:User
【處理好你的異常】
-----------------
異常處理是Java編程中非常重要的一個部分.建議在使用異常之前閱讀<Effective Java Programming Language Guide>或者<Practical 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.