java - 构建Java库并捕获异常

标签 java exception

我正在构建我的第一个 Java 库。该代码使用了大量 IO 方法,因此您可以想象有很多异常需要捕获。但我想知道,我应该抛出异常吗?我的意思是,捕获异常肯定是应用程序编写者的工作。因为即使我捕获了它们,我也不知道应用程序在发生这种情况时会做什么。

我应该抛出 IOException 等,还是应该在库代码中捕获它们?

最佳答案

您应该仅在可以的情况下处理异常 - 即,如果您的库对如何处理异常有足够的了解。

以下是您应该处理异常的示例:

  • 图书馆收到用户的请求
  • 库尝试读取配置文件
  • 由于找不到配置文件而出现 IOException
  • 库捕获异常并回退到使用默认配置(可能向用户发出没有配置文件的警告)

这是一个您不应处理异常的示例

  • 图书馆收到用户的请求
  • 尝试从请求中的字符串解析整数时,处理请求失败(获取 NumberFormatException)
  • 库无法处理异常 - 假设默认值(例如 0)会很危险
  • 异常被抛回给用户以供他们处理

如果您要向用户抛出异常,捕获并重新抛出异常通常是一个很好的做法 - 这使您能够将其包装在自己的自定义异常类中,并且可能添加额外的消息/详细信息等。

总的来说,请记住,如果您想编写一个好的软件组件,那么它应该具有 fail-fast behaviour 。如果有疑问,您应该失败并让用户知道(通过异常),而不是尝试在不健全的基础上继续。

关于java - 构建Java库并捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12418035/

相关文章:

java - 地理围栏在 Kotlin 中不起作用

java - 定义 VSS 插件操作的 MyEclipse 快捷方式

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

java - android 错误处理、断言或异常处理

java - 尝试覆盖方法时奇怪的 Eclipse 行为

java - WebLogic 上下文根

java - 异常处理: I can't catch exception in Java and Continue

python - 尝试将输入字符串转换为 float 时引发意外异常

java - 防止 Java 中运行时异常退出循环

java - 如何让回文程序不识别空格并以句点结尾?