我正在为第三方库使用的一系列API编写客户端库。
我们使用的底层http客户端只抛出RuntimeExceptions。我不想让这些异常冒出来,而是将它们包装在我们自己的ClientException中。
然而,我读到的所有内容似乎都表明捕获运行时异常是非常糟糕的做法?
在编写供第三方使用的库时,这是规则的例外吗?
答案 0 :(得分:2)
捕获未经检查的异常,尤其是以包装和重新抛出是没有错的。
唯一可以应用未经检查的例外情况的建议就是编写类似
的内容try { ... }
catch (RuntimeException e) { ... do some handling and move on ... }
因为这会阻止任何NullPointerException
,IllegalArgumentException
等等破坏执行流程。这些异常都太通用而无法自动恢复(由于太多不同的原因,可能出现在太多的地方),并且通常会指示编程错误,如果代码没有确定则更难以查明打破他们。