Java提高:採用異常鏈傳遞異常

來源:互聯網
上載者:User

標籤:exce   管理員   cti   定義   user   tca   pre   border   otf   

一、分析

    異常需要封裝,但是僅僅封裝還是不夠的,還需要傳遞異常。一個系統的友好型的標識,友好的介面功能是一方面,另一方面就是系統出現非預期的情況的處理方式了。

二、情境

    比如我們的JEE項目一般都又三層:持久層、邏輯層、展現層,持久層負責與資料庫互動,邏輯層負責商務邏輯的實現,展現層負責UI資料的處理。

    又這樣一個模組:使用者第一次訪問的時候,需要持久層從user.xml中讀取資料,如果該檔案不存在則提示使用者建立之,那問題就來了:如果我們直接把持久層的異常FileNotFoundException拋棄掉,邏輯層根本無從得知發生任何事情,也就不能為展現層提供一個友好的處理結果,最終倒黴的就是展現層:沒有辦法提供異常資訊,只能告訴使用者“出錯了,我也不知道出了什麼錯了”—毫無友好性而言。

    正確的做法是先封裝,然後傳遞,過程如下:

    1.把FileNotFoundException封裝為MyException。

    2.拋出到邏輯層,邏輯層根據異常代碼(或者自訂的異常類型)確定後續處理邏輯,然後拋出到展現層。

    3.展現層自行確定展現什麼,如果管理員則可以展現低層級的異常,如果是普通使用者則展示封裝後的異常。

    異常封裝如下:    


  
  1. public classIOException extends Exception{
  2. //定義異常的原因
  3. publicIOException(String message){
  4. super(message);
  5. }
  6. //定義異常原因,並攜帶原始的異常
  7. publicIOException(String message,Throwable cause){
  8. super(message,cause);
  9. }
  10. //保留原始異常資訊
  11. publicIOExcepiton(Throwable cause){
  12. super(cause);
  13. }
  14. }

    鏈中傳遞異常代碼如下:


  
  1. try{
  2. //DoSomethind
  3. }catch(Exceptione){
  4. //這種形式也可以叫異常轉譯,調用者獲得該異常後在調用getCause()方法即可獲得Exception的異常資訊,如此即可以方便尋找異常的根本資訊,便於解決問題。
  5. thrownew IOException(e);
  6. }

三、建議

    異常需要封裝和傳遞,我們在進行系統開發的時候,不要“吞噬”異常,也不要“赤裸裸”的拋出異常,封裝後在拋出,或者通過異常鏈傳遞,可以達到系統更健壯、友好的目的。


新技術,新未來!歡迎大家關注 “1024工場”服務號,時刻關注我們的最新的技術訊息! (甭客氣!盡情的掃描或者長按!)

Java提高:採用異常鏈傳遞異常

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.