《阿里巴巴開發手冊》讀書筆記 異常日誌

2021-10-03 09:40:40 字數 2005 閱讀 2373

if

(obj != null)

使用catch時要區分穩定**和非穩定**:

捕獲異常是為了處理,不要捕獲了什麼都不處理.如果不需要處理,應該將異常拋給呼叫者

如果有try塊放到了事務**中,catch異常後,如果需要回滾事務,一定要注意手動回滾事務finally塊必須對資源物件,流物件進行關閉,有異常也要做try - catch

不要在finally塊中使用return:

捕獲異常與丟擲異常必須完全匹配,或者是拋異常的父類

方法的返回值可以為null,不強制返回空集合或者空物件等,必須新增注釋充分說明什麼情況下會返回null值

一定要防止出現npe異常,注意npe產生的場景:定義時區分uncheckedchecked異常,避免直接丟擲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=false
name

="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 介面類中的...