我有一个简单的最小 HTTP 库,支持相互 TLS(在 Android 上),在这个库中我进行涉及多个 SSL 相关 API 的调用。最后,还有很多异常(exception)。因此,我的一个设置 API 抛出了几个异常,例如此列表:
* @throws IOException
* @throws CertificateException
* @throws NoSuchAlgorithmException
* @throws KeyStoreException
* @throws UnrecoverableKeyException
* @throws KeyManagementException
调用者必须编写所有这些 catch 语句,这很丑陋。如果我要捕获库中的异常并抛出一个异常,例如
IllegalArgumentException
并将原始异常的名称及其消息放入消息中,调用者会丢失任何信息吗?假设必须向后兼容 Java 1.6(对于较旧的 Android 设备)。鉴于异常通常用于指示错误,似乎仅创建单个异常对于调用者来说会更容易,并且不会丢失任何重要的内容。但我没有看到它被完成,所以我认为我一定是错的并且错过了一些东西。
最佳答案
最后,这有点风格。有两个选择是有意义的:
- 你捕获所有这些东西并抛出你自己发明的检查异常(围绕原始异常)
- 你也这样做,要么使用你自己发明的未经检查的异常,要么你简单地将东西包装到一个新的 RuntimeException 中
您选择哪种方式几乎无关紧要(也称为固执己见),唯一真正重要的是您清楚地记录您的 API 到底在做什么,以及何时抛出什么。
关于java - 处理库中的多个 Java 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56415273/