我正在寫一個小型庫,並且需要訪問幾種不同類型的文件。儘管訪問方法本身對於每種文件格式都是不同的,但它們似乎有很多共同之處,並且我在類層次結構中放置了一個接口,其中我編寫了一個應連接到數據源的方法。Java:我應該/除了身份驗證時拋出什麼?
但是,由於數據源可能受密碼和/或用戶權限的保護,因此有時需要驗證才能檢索數據。我的問題是:
當需要驗證時拋出異常是個好主意嗎?
由於我想盡可能少地公開實現,我只想告訴用戶發生了什麼事。但是身份驗證可能需要許多不同的東西(用戶名,密碼等),因此可以將它們打包成一個例外並將其扔出?或者,也許有更好的方式,而不訴諸於例外,因爲「需要驗證」並不是真正的例外通常用來處理的例外行爲。
需要身份驗證時拋出什麼異常?
現在假設我決定使用異常來處理這個問題。我應該拋出哪個異常?隨Java API附帶的幾個
AuthenticationException
似乎不符合此要求,因爲它們似乎都非常具體,例如在命名服務中使用。我不確定是否需要SecurityException
,但如果這不合適,我仍然不想拋出自己的異常,因爲這會阻礙其他人理解我的代碼以及API背後發生的情況。
感謝您的任何意見!這有點冗長,也許過於冗長,所以任何可以改善問題的編輯都非常受歡迎。
那你現在的API如何? 'openFile(String name,String userName,String password);'並且調用者不知道是否對於特定的文件調用應該是'openFile(name,null,null);''或'openFile(name,administrator)「1234 「);'? – Cratylus
@ user384706:現在我只是重載了這些方法,並提供了一個只有文件地址的版本,一個帶有密碼,另一個帶有用戶名和密碼。所有三個都會在失敗時拋出異常,第一個和第二個只是調用第三個方法來實現結果。感謝評論! –