寫在開始前---web異常處理

分層項目中,有上層調用下層,每一層均可能出錯,好比數據庫鏈接,文件讀寫等異常。除了運行時程序的異常,還有業務邏輯的一些問題。發生異常須要作必定處理,既要讓開發人員便於排查問題,又要讓用戶看到友好又便於理解的信息。sql

對於底層鏈接數據庫,操做數據庫的數據層,異常捕捉後,能夠記錄日誌,日誌能夠是當前文件,行號,sql語句,參數,錯誤的詳情等。而後再往上層拋異常,在控制器層捕捉,判斷後返回給用戶客戶端恰當的便於理解的錯誤信息。這個信息是根據業務模塊功能具體來肯定的。好比用戶模塊的新增功能,當用戶名重複的時候,能夠提示‘用戶名已存在’,比‘操做失敗,請重試’要直觀,固然這是業務邏輯的異常,程序異常也相似。數據庫

一般能夠自定義本身的異常類型,做爲底層的異常拋到上層去。上層能夠集中配置一個異常信息對照表,或錯誤碼錶,根據返回的異常,查找對應的用戶提示信息,並返回。架構

常見的控制層代碼段以下:日誌

try{隊列

   //model();開發

}catch(Exception e){io

  //print();配置

  //log('文件-行號-異常信息');sql語句

      //return '根據e的類型,返回用戶友好的信息提示';model

}

每一個controller都有相似的代碼,因此能夠把這個處理邏輯搬到攔截器或者調度器裏,而後根據異常類型或異常錯誤號,再對應集中返回信息。

至於log記錄,則根據狀況來分析,實際業務訪問量,系統規模架構等都有很大影響。通常是記錄在文件,隊列,日誌型數據庫等。

 

層層拋出、上層捕捉、詳情記錄、友好返回、異常信息對照表

相關文章
相關標籤/搜索