创建库时捕获并包装运行时异常?

时间:2014-02-06 12:20:24

标签: java exception-handling client-library

我正在为第三方库使用的一系列API编写客户端库。

我们使用的底层http客户端只抛出RuntimeExceptions。我不想让这些异常冒出来,而是将它们包装在我们自己的ClientException中。

然而,我读到的所有内容似乎都表明捕获运行时异常是非常糟糕的做法?

在编写供第三方使用的库时,这是规则的例外吗?

1 个答案:

答案 0 :(得分:2)

捕获未经检查的异常,尤其是以包装和重新抛出是没有错的。

唯一可以应用未经检查的例外情况的建议就是编写类似

的内容
try { ... }
catch (RuntimeException e) { ... do some handling and move on ... }

因为这会阻止任何NullPointerExceptionIllegalArgumentException等等破坏执行流程。这些异常都太通用而无法自动恢复(由于太多不同的原因,可能出现在太多的地方),并且通常会指示编程错误,如果代码没有确定则更难以查明打破他们。