簡體   English   中英

始終使用選中的例外

[英]Always Use Checked Exceptions

我最近一直在重新考慮一些Java代碼......我發現有很多RuntimeExceptions被拋出(即未經檢查的異常)。 我創建了自己的已檢查異常,並用我自己的異常替換了這些RuntimeExceptions的每個實例。 然后,這迫使我檢查異常。

有了這個,我發現檢查異常更好,因為另一個開發人員將確保處理異常...而不是程序只是吃異常而不向用戶顯示任何內容。

我已經閱讀了許多有關未檢查的異常與已檢查的異常的文章。但是,我仍然覺得我更檢查了異常,因為它減少了人為錯誤。

編程有多糟糕,主要是使用檢查異常? 有沒有其他人覺得他們喜歡檢查異常比未經檢查的異常更多?

我的建議,雖然不同的人會對此有不同的看法,但是:

  • 對於應由您認為屬於應用程序邏輯的部分處理的異常條件,使用已檢查的異常,例如:用戶輸入非現有用戶名進行登錄,用戶嘗試保存,項目超出其訂閱允許的限制等。這樣,發現異常情況的代碼的客戶端被迫至少承認可能發生這種情況的事實,並希望以最恰當的方式處理它
  • 使用未經檢查的異常會在您無法控制的情況下及早失敗並且無法通過應用程序邏輯進行恢復,例如:您的函數接收錯誤的參數作為參數:聽起來像拋出“非法參數異常”的完美場景,是大多數編程語言中的運行時異常

預先檢查的異常看起來很不錯,但實際上它們根本無法解決其設計要解決的問題(更多詳細信息, 參見https://arpytoth.com/2016/04/08/the-problem-with-checked-exceptions/ ) 。

Java 不會強迫您處理異常 ,而只是強迫您准確地確認哪些異常可能會通過。 大多數開發人員使用一個空塊來捕獲它們,或者使用throws子句讓異常通過。 這會使代碼更加冗長,復雜,有時難以測試,從而總體上降低了代碼質量,而沒有任何明顯的好處。 還要注意,Java的新功能在檢查異常(例如lambda表達式)上也不能很好地發揮作用。 我的建議是避免檢查異常,而應使用運行時。

暫無
暫無

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

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