构建Java库并捕获异常

时间:2012-09-14 04:15:02

标签: java exception

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

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

2 个答案:

答案 0 :(得分:2)

只有在您的情况下才应处理异常 - 即,您的图书馆对如何处理异常有足够的了解。

以下是处理异常时的示例:

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

以下是不应处理异常的示例

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

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

一般情况下,如果你想编写一个好的软件组件,它应该有fail-fast behaviour。如果有疑问,你应该失败并让用户知道(通过例外),而不是试图继续在不健全的基础上。

答案 1 :(得分:0)

是的,这是一种常见做法。但是请确保尽可能多地抛出特定方法在运行时可能发生的所有异常异常。除此之外,根据Effective Java - Second Edition第62项 - “记录每种方法抛出的所有异常”。您可能永远不知道何时可以重复使用或包含您在下一个项目中工作的库。

  

有关详细信息,请阅读本书的第9章。