国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

異常處理:和日志集成

2019-11-17 06:09:59
字體:
供稿:網(wǎng)友

  在軟件實現(xiàn)中,異常和日志都是重要的質(zhì)量保證手段,經(jīng)常,我們總是需要在系統(tǒng)實現(xiàn)上同時提供異常和日志,并且總是在“距離”很近的地方實現(xiàn)的,下面是一段典型的使用異常和日志的代碼:
   來源:http://www.matrix.org.cn/blog/X-Brave/

  try{
         //do something here...
     }catch(Exception e){
         log.error(“Your business exception message…”);
         throw new BusinessException(“Your business exception message…”);
    }
    
  類似的代碼我們經(jīng)常碰到。雖然類似的代碼都是簡單的,但在現(xiàn)實中我們可以發(fā)現(xiàn),一些時候粗心的程序員總是忽略或者忘記了兩者都需要書寫并且盡可能使用一致的異常消息。既然異常和日志總是同時出現(xiàn)的,那么我們就可以把兩者集合起來。實際上在我看來,他們本來就是一家人。
    
  為了達到異常和日志的集合,我測試過2種做法:一種選擇是在自定義異常類中提供支持;一種是異常消息拼湊時提供支持。我們也可以在其中提供額外的功能來保證系統(tǒng)的效能,包括“適度”緩沖的異常處理。但需要非凡注重的是,這種處理所帶來的“長過程”(也就是經(jīng)過不止一個步驟才完成這些功能)開銷,在緩沖異常信息可能帶來的系統(tǒng)出錯時異常丟失,以及在異常消息處理時可能出現(xiàn)錯誤需要提供額外的保護措施。
    
  更進一步的,我們應該注重到如下事實:
    
  首先,異常的層次結(jié)構(gòu)是不同的。它包括了底層的LowlevelException(合稱相關需要拋出異常的異常處理)和上層的異常使用者,細心的讀者應該發(fā)現(xiàn),上述的實例實際上屬于LowlevelException。
    
  其次,我們也應該注重到異常包括客戶定制的異常如BusinessException和java自帶的異常。這些異常的共存如何進行統(tǒng)一是我們需要面對的,但通常,我認為異常的客戶定制包裝是必要的,非凡是多層結(jié)構(gòu)下這個客戶定制化就是讓異常具有輕易理解的信息。
    
  異常和日志的集合,是一種簡單、實用的創(chuàng)新做法,在這種實現(xiàn)里面,你可以提高系統(tǒng)異常處理的一致性程度、你可以提供經(jīng)過緩沖的日志輸出的一致性做法,我們也注重到她的處理的靈活性,必要時,你可以關閉她。
    

  當然,無論如何,異常和日志的集合也好,分離也好,任何時候,人的因素才是最重要的,更一般的,我們可以發(fā)現(xiàn),異常和日志要做的就是把系統(tǒng)非凡的或者重要的情況記錄下來,這些記錄信息應該具有明確的信息保證她是可讀的、可定位的,實際上,這就是異常處理的全部。簡單的說,“異常處理:實用就是好”(參考http://www.matrix.org.cn/blog/X-Brave/《異常處理:實用就是好》)。

    實際上,為了提高性能和保證系統(tǒng)的正確性,我很想使用異步消息機制來完成這些功能,或者至少我需要保證系統(tǒng)在 集群 環(huán)境下的正確性,但我拒絕使用復雜的第三方技術(shù)來實現(xiàn)這些要求(性能和依靠考慮),也不優(yōu)先考慮使用高端服務器所自帶的或者外購的消息服務組件,我也缺乏對 集群 環(huán)境的實際經(jīng)驗,這些現(xiàn)實妨礙了我對更好的實現(xiàn)的嘗試。

    但通過在系統(tǒng)中提供開關功能、對緩沖數(shù)據(jù)進行數(shù)目控制以及只在有限的幾個或者一個地方提供具體實現(xiàn),所以,對屏蔽該功能是輕易的。當然,對至少兩種實現(xiàn)的較高強度測試都是沒有問題的。究竟,真正的分布式的實現(xiàn),非凡是 集群 環(huán)境下的處理,并非如很多人宣稱的那么輕易實現(xiàn)。這種既滿足了當前絕大部分需求(包括性能和可靠性)也充分考慮可能的影響并提供小開銷解決方案的處理,我想,是足夠了的。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 屏边| 长丰县| 梁山县| 沙湾县| 玉溪市| 大姚县| 英德市| 比如县| 葫芦岛市| 彝良县| 广丰县| 清丰县| 临桂县| 益阳市| 沈丘县| 江川县| 宜昌市| 承德县| 时尚| 武隆县| 青冈县| 屏山县| 唐山市| 平远县| 乌苏市| 晋中市| 新巴尔虎左旗| 隆尧县| 绩溪县| 普兰店市| 凌海市| 裕民县| 溧阳市| 景谷| 湘西| 上杭县| 海口市| 临洮县| 隆尧县| 阿瓦提县| 容城县|