我正在编写一个小型库,我需要在其中访问几种不同类型的文件。虽然每种文件格式的访问方法本身都不同,但它们似乎有很多共同点,我在类层次结构中放置了一个接口,我在其中编写了一个应该连接到数据源的方法。
但是,由于数据源可能受到密码和/或用户权限的保护,因此有时需要进行身份验证才能检索数据。我的问题是:
需要身份验证时抛出异常是个好主意吗?
由于我想尽可能少地公开实现,我只想告诉用户发生了什么。但是身份验证可能需要许多不同的东西(用户名、密码等),所以我可以将它们打包到一个异常中并扔掉吗?或者,也许有更好的方法而不诉诸异常,因为“需要身份验证”并不是异常通常用来处理的异常行为。
需要身份验证时抛出什么异常?
现在假设我决定使用异常来处理这个问题。我应该抛出哪个异常?Java API 附带的几个
AuthenticationException
s 似乎不符合这个要求,因为它们似乎都非常具体,例如,在命名服务中使用。我不确定是否SecurityException
可行,但如果这是不正确的,我仍然真的不想抛出我自己的异常,因为这会妨碍其他人理解我的代码以及 API 背后发生的事情。
感谢您的任何意见!这有点冗长或可能过于冗长,因此非常欢迎任何可以改善问题的编辑。