【发布时间】:2020-08-31 07:14:48
【问题描述】:
我正在使用 Java 11 http-client (java.net.http)。
send() 方法声明了这些异常:
@throws IOException
@throws InterruptedException
@throws IllegalArgumentException
@throws SecurityException
我对捕获由超时引起的异常很感兴趣。
我认为最好的方法是抓住
HttpTimeoutException(扩展IOException)
但是,我有时会看到发生超时时抛出的异常是:
java.io.IOException: Connection timed out
现在我想知道:
- 为什么会抛出更一般的异常?
- 应如何编写 catch 以确保捕获所有可能的超时相关异常?
【问题讨论】:
-
你的catch子句可以考虑IOException|HttpTimeoutException| InterruptedByTimeoutException|TransportTimeoutException - 这些是从 IOExceptions 继承的超时异常,可能还有更多继承的 InterruptedException 异常docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/…
标签: java java-11 timeoutexception java-http-client