log,exception最佳實(shí)踐
項(xiàng)目組對(duì)log和exception的討論結(jié)果。希望更多的人參與討論。
1 log
1.1 用log.error表示系統(tǒng)級(jí)錯(cuò)誤
1.2 用log.warn表示應(yīng)用級(jí)錯(cuò)誤
1.3 服務(wù)初始化或結(jié)束用log.info
1.4 用log.debug替代out,debug要判斷isDebugEnable
1.5 用log.warn("",e)替代e.printstack
1.6 用log4e生成log相關(guān)代碼
1.7 Log信息要保證可讀性,需記錄現(xiàn)場(chǎng)信息,如當(dāng)前處理id等
2 exception
2.1 try catch內(nèi)的代碼不要太長(zhǎng)
2.2 因?yàn)樾阅茉颍?/SPAN>try catch少放循環(huán)內(nèi)
2.3 盡量避免catch(Exception)這樣的寫(xiě)法
2.4 不同模塊定義不同的exception
2.5 建議創(chuàng)建應(yīng)用的基類exception,特別是有定義error code需要的應(yīng)用
2.6 只要catch就要log error message
2.7 catch并封裝成另一種exception,如果不nest原來(lái)的exception就要log stackTrace
2.8 持久層throw dataAccessException,業(yè)務(wù)層throw checked exception,展現(xiàn)層只顯示exception信息
2.9 規(guī)范的exception流程定義如下:
業(yè)務(wù)層不需處理的runtime exception,由展現(xiàn)層定義的exception controller捕獲,交給相應(yīng)的error頁(yè)面顯示并記錄stack信息。業(yè)務(wù)層捕獲下層的exception,并封裝成業(yè)務(wù)層的checked exception,如果nest所捕獲的exception,則僅log error message,如果不nest就需要用log.warn(“”,e)記錄stack信息。展現(xiàn)層捕獲業(yè)務(wù)層的exception,應(yīng)由處理業(yè)務(wù)層exception的error頁(yè)面來(lái)處理。
posted on 2006-01-18 15:39 pesome 閱讀(3635) 評(píng)論(10) 編輯 收藏 所屬分類: 系統(tǒng)架構(gòu)