我正在写一个小型库,并且需要访问几种不同类型的文件。尽管访问方法本身对于每种文件格式都是不同的,但它们似乎有很多共同之处,并且我在类层次结构中放置了一个接口,其中我编写了一个应连接到数据源的方法。Java:我应该/除了身份验证时抛出什么?
但是,由于数据源可能受密码和/或用户权限的保护,因此有时需要验证才能检索数据。我的问题是:
当需要验证时抛出异常是个好主意吗?
由于我想尽可能少地公开实现,我只想告诉用户发生了什么事。但是身份验证可能需要许多不同的东西(用户名,密码等),因此可以将它们打包成一个例外并将其扔出?或者,也许有更好的方式,而不诉诸于例外,因为“需要验证”并不是真正的例外通常用来处理的例外行为。
需要身份验证时抛出什么异常?
现在假设我决定使用异常来处理这个问题。我应该抛出哪个异常?随Java API附带的几个
AuthenticationException
似乎不符合此要求,因为它们似乎都非常具体,例如在命名服务中使用。我不确定是否需要SecurityException
,但如果这不合适,我仍然不想抛出自己的异常,因为这会阻碍其他人理解我的代码以及API背后发生的情况。
感谢您的任何意见!这有点冗长,也许过于冗长,所以任何可以改善问题的编辑都非常受欢迎。
那你现在的API如何? 'openFile(String name,String userName,String password);'并且调用者不知道是否对于特定的文件调用应该是'openFile(name,null,null);''或'openFile(name,administrator)“1234 “);'? – Cratylus
@ user384706:现在我只是重载了这些方法,并提供了一个只有文件地址的版本,一个带有密码,另一个带有用户名和密码。所有三个都会在失败时抛出异常,第一个和第二个只是调用第三个方法来实现结果。感谢评论! –