在軟件實現中,異常和日志都是重要的質量保證手段,經常,我們總是需要在系統實現上同時提供異常和日志,并且總是在“距離”很近的地方實現的,下面是一段典型的使用異常和日志的代碼:
來源: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…”);
}
類似的代碼我們經常碰到。雖然類似的代碼都是簡單的,但在現實中我們可以發現,一些時候粗心的程序員總是忽略或者忘記了兩者都需要書寫并且盡可能使用一致的異常消息。既然異常和日志總是同時出現的,那么我們就可以把兩者集合起來。實際上在我看來,他們本來就是一家人。
為了達到異常和日志的集合,我測試過2種做法:一種選擇是在自定義異常類中提供支持;一種是異常消息拼湊時提供支持。我們也可以在其中提供額外的功能來保證系統的效能,包括“適度”緩沖的異常處理。但需要非凡注重的是,這種處理所帶來的“長過程”(也就是經過不止一個步驟才完成這些功能)開銷,在緩沖異常信息可能帶來的系統出錯時異常丟失,以及在異常消息處理時可能出現錯誤需要提供額外的保護措施。
更進一步的,我們應該注重到如下事實:
首先,異常的層次結構是不同的。它包括了底層的LowlevelException(合稱相關需要拋出異常的異常處理)和上層的異常使用者,細心的讀者應該發現,上述的實例實際上屬于LowlevelException。
其次,我們也應該注重到異常包括客戶定制的異常如BusinessException和java自帶的異常。這些異常的共存如何進行統一是我們需要面對的,但通常,我認為異常的客戶定制包裝是必要的,非凡是多層結構下這個客戶定制化就是讓異常具有輕易理解的信息。
異常和日志的集合,是一種簡單、實用的創新做法,在這種實現里面,你可以提高系統異常處理的一致性程度、你可以提供經過緩沖的日志輸出的一致性做法,我們也注重到她的處理的靈活性,必要時,你可以關閉她。
新聞熱點
疑難解答