對於可恢復狀況使用受檢異常,對於編程錯誤使用運行時異常(58)

java 程序設計語言可拋出三種結構(throwable):java

  • 受檢異常
  • 運行時異常
  • 錯誤

雖然何時拋出什麼,不老是那麼的清晰,可是依然存在一些指導性原則api

  • 若是能夠適當的恢復,請使用受檢異常(強迫調用者處理該異常或者拋出去)
  • API 設計者讓api 用戶面對受檢異常,強迫處理受檢異常

未受檢的拋出結構包括(運行時異常、錯誤)jvm

  • 兩者都是不須要也不該該被捕獲的可拋出結構
  • 若是拋出爲受檢異常,每每就屬於不可恢復的情形,繼續執行下去有害無益

使用運行時異常代表變成錯誤設計

  • 大多數運行時異常都是前提違例致使的
    • 前提違例:調用者未遵照api的調用規範

雖然 java 語言規範沒要求,可是錯誤每每被jvm保留用來表示資源不足、約束失敗、或其餘是程序沒法執行下去的條件資源

  • 約定俗成,最好不要再去建立Error 的子類
  • 全部未受檢拋出結構都應該是RuntimeException 的子類
  • 能夠定義一個新的拋出結構(不屬於上述三者),這樣作沒有任何益處,並且困擾api使用者

總之:io

  • 可恢復異常,使用受檢異常
  • 程序錯誤,使用運行時異常
    • 若是不清楚是否可恢復,最好使用未受檢異常
  • 受檢異常每每指明瞭恢復條件,提供輔助方法就很重要(好比電話呼叫失敗,捕獲異常能夠查詢欠費金額而且返回給用戶看)
相關文章
相關標籤/搜索