if
(obj != null)
使用catch時要區分穩定**和非穩定**:
捕獲異常是為了處理,不要捕獲了什麼都不處理.如果不需要處理,應該將異常拋給呼叫者
如果有try塊放到了事務**中,catch異常後,如果需要回滾事務,一定要注意手動回滾事務finally塊必須對資源物件,流物件進行關閉,有異常也要做try - catch
不要在finally塊中使用return:
捕獲異常與丟擲異常必須完全匹配,或者是拋異常的父類
方法的返回值可以為null,不強制返回空集合或者空物件等,必須新增注釋充分說明什麼情況下會返回null值
一定要防止出現npe異常,注意npe產生的場景:定義時區分unchecked和checked異常,避免直接丟擲new runtimeexception(),不允許丟擲exception或者throwable,應該使用有業務含義的自定義異常
對於公司外的http或者api開放介面必須使用「錯誤碼」;應用內部推薦異常丟擲;跨應用間的rpc呼叫優先考慮使用result方式,封裝issuccess()方法,錯誤碼,錯誤簡短資訊
避免出現重複的**,即dry(don』t repeat yourself)原則:
private
boolean
checkparam
(dto dto)
對日誌進行分類,比如將錯誤日誌和業務日誌分開存放,便於開發人員檢視,也便於對日誌系統進行及時監控
對trace,debug,info級別的日誌輸出,必須使用條件輸出形式或者使用佔位符方式
logger.
debug
("processing trade with id: "
+ id +
" and symbol: "
+ symbol)
;
if
(logger.
isdebugenabled()
)
logger.
debug
("processing trade with id:
and symbol:
, id, symbol)
;
避免重複列印日誌,浪費磁碟空間,必須在log4j.xml中設定additivity=falsename
="com.oxford.dubbo.config"
additivity
="false"
>
logger.
error
(各類引數或者物件tostring()
+"_"
+ e.
getmessage()
, e)
;
可以使用warn日誌級別來記錄使用者輸入引數錯誤的情況
注意日誌的輸出級別:
使用全英文來注釋和描述日誌錯誤資訊
阿里巴巴開發手冊
反例 string str start for int i 0 i 100 i 2 注意 math.random 這個方法返回是double型別,注意取值的範圍 0 x 1 能夠取到零值,注意除零異常 如果想獲取整數型別的隨機數,不要將x放大10的若干倍然後取整,直接使用random物件的nexti...
阿里巴巴開發手冊之異常處理
1.對於預先能知道的異常比如 空指標npe,陣列越界異常要預先檢查規避 2.異常不做流程控制,條件控制 3,catch的時候一定要知道哪些是穩定 哪些是不穩定 4.異常捕獲一定要處理,不處理直接拋給最外層業務方處理。5.不要在 finally 塊中使用 return。說明 try 塊中的 retur...
阿里巴巴Java開發手冊
一 程式設計規範 一 命名風格 1 類命名風格 首字母大寫,即uppercamelcase風格 2 方法名 引數名 成員變數 區域性變數都是用lowercamelcase風格 3 常量命名全部大寫 max count 4 定義整形陣列 int arraydemo 5 包名統一使用小寫 6 介面類中的...