我正在开发一个用于数据库访问的 JAR 库。我首先捕获了在 try block 中发现的所有异常并处理它们。 但后来,我认为它会更好,因为它是一个将异常抛给最终程序员以捕获它并进行处理的库。
关于处理 JAR 文件中的异常的最佳实践是什么?
以下是我的 JAR 中的示例代码,如您所见,抛出了很多异常。这是一个好的做法还是有更好的方法? (就像定义一个新的自定义异常;如果是这样,它是如何完成的?) 非常感谢与此相关的任何帮助。
public static NConnection getNConnection(String path) throws IOException, ParserConfigurationException, SAXException {
NConfigurations conf = new NConfigurations();
conf.setConfigurationLoc(path);
String dbPath = conf.getDatabasePath();
return createConnection(dbPath);
}
最佳答案
这个问题没有简单的答案,社区在某种程度上不确定什么是真正的最佳实践。简而言之,如果您想强制调用者处理出现问题的情况/给他一个从这种异常状态中恢复的机会,您可以使用已检查的异常。 使用运行时异常用于任何其他情况,例如违反契约(Contract)等编程错误。
在我看来,最好的做法是任何库都扩展自己的异常类,即使它只是包装原始异常。这样 - 作为客户 - 我可以阅读堆栈跟踪并轻松发现我的代码的哪一部分出了问题。例如。如果有一个 DBFrameworkException 它比常见的 NullPointerException 更清楚。
另见 Bloch's Effective Java item 58 关于这个主题的一些很好的解释。
关于java - Java 库最佳实践中的抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29533992/