我正在为我们的一系列 API 编写一个客户端库,以供第三方库使用。
我们使用的底层 http 客户端仅抛出 RuntimeExceptions。我不想让这些异常冒出来,而是将它们包装在我们自己的 ClientException 中。
但是我读到的所有内容似乎都表明捕获运行时异常确实是不好的做法?
在编写供第三方使用的库时,这是规则的异常(exception)吗?
最佳答案
捕获未经检查的异常没有任何问题,尤其是为了包装和重新抛出。
不捕获未检查异常的建议唯一适用的情况是编写类似的内容
try { ... }
catch (RuntimeException e) { ... do some handling and move on ... }
因为这将阻止任何 NullPointerException
、IllegalArgumentException
等破坏执行流程。这些异常都太通用,无法自动恢复(由于太多不同的原因,可能出现在太多地方),并且通常指示编程错误,如果代码不这样做,则更难以查明。不要破坏他们。
关于java - 创建库时捕获并包装运行时异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21602821/