拋出與抽象相對應的異常(61)

若是方法拋出的異常和外層執行任務沒有明顯的聯繫,會令人很困惑spa

  • 更高層實現應該捕獲底層異常,而且拋出按照高層邏輯進行解釋的異常

若是底層的異常對於調試有幫助,能夠考慮使用異常鏈3d

  • 高級異常的構造須要低級異常做爲參數傳入

  • 大部分標準異常都支持鏈的構造器

  • 對於不支持的,能夠使用Throwable initCause來實現
    • getCause 獲取緣由
    • 還能夠使用堆棧軌跡,集成到更高級的異常

儘管異常轉譯比不加思索的拋出底層異常有所改進,可是也請不要濫用調試

  • 在調用底層異常時,多作些檢查,確保其執行正常,從而避免拋出異常

若是沒法避免底層異常,次選方案是讓高層繞過,使用某種適當的記錄機制將異常記錄下來blog

總而言之::異常轉譯和異常鏈都不錯get

  • 異常轉譯使得異常語義更加明確
  • 異常鏈,容許逐層進行分析
相關文章
相關標籤/搜索