java - 处理库中的多个 Java 异常

标签 java exception

我有一个简单的最小 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/

相关文章:

java - 为什么 org.apache.hadoop.io.Writable 不能转换为 org.apache.hadoop.io.IntWritable?

java - 捕获多个 webdriver 异常时如何 OR

java - 如果每个异常捕获都应该记录它?

java - 我正在编写一个名为discount.java的类,并且在处理数量和价格的负值时遇到问题

java - jsoup SocketTimeout 异常

c++ - 带有 lambda 捕获的 EXC_BAD_ACCESS

java - 我该如何解决 UnsupportedClassVersionError?

javascript - 如何使用Java + Selenium WebDriver移动到动态页面底部

java - 安卓开发 : How do I integrate threads in this?

ios - 使用 NSNotifications 从 TableViewController 导航回 UIViewController