我正在构建我的第一个 Java 库。该代码使用了大量 IO 方法,因此您可以想象有很多异常需要捕获。但我想知道,我应该抛出异常吗?我的意思是,捕获异常肯定是应用程序编写者的工作。因为即使我捕获了它们,我也不知道应用程序在发生这种情况时会做什么。
我应该抛出 IOException 等,还是应该在库代码中捕获它们?
最佳答案
您应该仅在可以的情况下处理异常 - 即,如果您的库对如何处理异常有足够的了解。
以下是您应该处理异常的示例:
- 图书馆收到用户的请求
- 库尝试读取配置文件
- 由于找不到配置文件而出现 IOException
- 库捕获异常并回退到使用默认配置(可能向用户发出没有配置文件的警告)
这是一个您不应处理异常的示例
- 图书馆收到用户的请求
- 尝试从请求中的字符串解析整数时,处理请求失败(获取 NumberFormatException)
- 库无法处理异常 - 假设默认值(例如 0)会很危险
- 异常被抛回给用户以供他们处理
如果您要向用户抛出异常,捕获并重新抛出异常通常是一个很好的做法 - 这使您能够将其包装在自己的自定义异常类中,并且可能添加额外的消息/详细信息等。
总的来说,请记住,如果您想编写一个好的软件组件,那么它应该具有 fail-fast behaviour 。如果有疑问,您应该失败并让用户知道(通过异常),而不是尝试在不健全的基础上继续。
关于java - 构建Java库并捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12418035/