我使用舊服務層的項目工作,如果請求的記錄不存在或者由於調用者未被授權而無法訪問,該服務層會在許多地方返回空值。我正在談論ID所要求的特定記錄。舉例來說,像這樣:服務層檢查與未檢查異常
UserService.get(userId);
我最近被推到這個API改變,或輔以拋出異常,而不是一個新的API。隨後關於檢查與未檢查的例外的爭論隨之而來。
從JPA/Hibernate et all的設計人員處獲悉,我建議未經檢查的異常可能是最合適的。我的觀點是,API的用戶無法合理預期從這些異常中恢復,在99%的情況下,我們最多可以通知應用程序用戶發生了一些錯誤。
將運行時異常傳播到通用處理機制將明顯降低處理邊緣情況異常所涉及的大量複雜性和所需的分支處理。但是,圍繞這種方法存在很多擔憂(正確)。
爲什麼JPA/EJB和Hibernate等項目的設計者選擇使用未經檢查的異常模型?有沒有非常好的理由呢?有什麼優點/缺點。是否應該使用這些框架的開發人員仍然在處理運行時異常時使用類似適配器包裝的方式來處理它們。
我希望這些問題的答案可以幫助我們對自己的服務層做出「正確」的決定。