簡體   English   中英

為錯誤的配置拋出Unchecked Exception是一個好主意嗎?

[英]Is it a good idea to throw an Unchecked Exception for bad configuration?

我的應用程序使用其中包含很多可配置項的配置文件。

例如,您可以使用自定義別名指定要用於WebService連接的自定義密鑰庫(而不是默認的JVM javax.net.ssl.keystore )。

在運行時,我們可能會發現此別名在密鑰庫中不存在,因此我們可能想拋出一個異常。 因為這是應用程序的關鍵部分(並且我們不能期望應用程序在配置被修復之前才能正常運行),所以我認為拋出Unchecked Exception是一個好主意。

我這樣想對嗎?

在這種情況下,創建一個自定義ConfigurationException (擴展了RuntimeException )是否有意義?

引發檢查異常會通知您的方法用戶該方法可以引發特定異常。 這樣,當我們收到該異常時,用戶可以決定要做什么。

如果您的要求是“除非配置正確,否則應用程序不應繼續運行”,並且用戶無法運行任何方法來繞過它(在try-catch塊中),那么我看不出有任何理由使其成為已檢查的異常(為什么要這樣做如果我們知道沒有用,用戶將執行不必要的工作)。

因此,在這種情況下,我還將尋求未經檢查的異常。

我認為您應該創建一個檢查異常,並在捕獲它時在顯示消息或其他內容后在catch塊中結束程序。 未經檢查的異常是針對編程錯誤的,開發人員應予以糾正。 檢查異常是針對可能發生的情況,但我們無法控制它。 您知道配置文件可能已損壞,但是您無法阻止它發生並且無法控制它。 我會去檢查異常。

未檢查的異常表示程序中的錯誤或系統錯誤。 例如, ArrayIndexOutOfBoundsExceptionNullPointerException不應在程序中發生,並且如果發生,則通常表示錯誤。

驗證用戶輸入(直接用戶輸入或通過配置文件輸入用戶)時,異常並不表示錯誤。 因此,它應該是一個已檢查的異常,以提醒調用您的方法的程序員,異常不太可能發生並且必須被捕獲。 通過捕獲異常,您可以生成用戶友好的錯誤消息,該錯誤消息指向解決方案。 (您不希望最終用戶Exception in thread ...消息中看到Java生成的Exception in thread ... !)

暫無
暫無

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

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