簡體   English   中英

Guava前提條件RuntimeExceptions處理

[英]Guava Preconditions RuntimeExceptions handling

據我了解,在更改某些對象狀態之前,我們使用了Guava前提條件來快速失敗( 是stackoverflow的一個不錯的答案)。 這很好。 但是,它將引發運行時異常,而這不是應用程序用戶所喜歡的異常(500個錯誤,等等)。 因此,我需要您在設計方面給我一些幫助。

我有一個聲明許多方法的接口。 每個方法都有必須控制的參數(例如:不為null)。 因此,在實現類中,我使用如下指令:

Preconditions.checkNotNull(fooObj);

但是,調用此API的程序可能會由於運行時異常(在這種情況下為NullPointerException)而崩潰。

那么,如何處理這些未經檢查的異常?

謝謝。

--------編輯應用程序層:

  • 資料存取層

  • API聲明交換DTO的方法

  • 使用Guava處理API並檢查參數的過程

  • Webservice取決於流程層

前提條件失敗意味着您的程序存在錯誤。 除非他們在您的程序中發現錯誤,否則用戶不應遇到這些錯誤。

通常,您的程序應該出現錯誤的情況下向用戶顯示某種錯誤消息,但更重要的是,您應該得到通知,以便可以首先修復該錯誤。

您可以通過設計程序來確保它們永遠不會發生來處理它們。 這些前提條件方法旨在檢測錯誤並幫助准確找到根本原因,而不是驗證用戶輸入。

如果僅定義API,而不是定義調用該API的程序,則可以通過告訴文檔中的人員所討論的參數一定不能為null來“處理”該API,並由他們來滿足該要求。

如果您也在編寫調用程序,請首先嘗試確保該異常永遠不會發生。 您還可以將調用放在try/catch塊中以捕獲NullPointerException ,但是catch塊的目的應該是使您更好地通知該錯誤(例如,記錄日志消息或觸發警報)以及觸發情況,並可能更正常地關閉或給出更用戶友好的錯誤消息。 從故障中恢復的嘗試應該格外小心或根本不要進行-如果發生這種故障,則說明您沒有預料到發生了問題,並且正確的恢復方法可能無法預測。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM