在设置读取超时之前,不会引发SocketTimeoutException

时间:2018-06-28 20:39:17

标签: connection-timeout socket-timeout-exception

当我使用标准的HTTP客户端在Java中收到 SocketTimeoutException 时,我想区分读取超时连接超时。 要重现此问题,我对正在运行的服务器使用了 kill -SIGSTOP 命令,并观察到以下情况:

  1. 如果仅设置了System.out.println(NAMES); ,程序将暂停并且我看不到任何异常。 1秒钟后,我是否应该看到conn.setConnectTimeout(1000);SokcetTimeoutException的消息?
  2. 更奇怪的是,同时设置connect timed outconn.setConnectTimeout(1000);时,我看到此程序打印conn.setReadTimeout(3000);。这是否意味着服务器能够建立连接?在这种情况下,我假设Cause:java.net.SocketTimeoutException: Read timed out暂停了该过程,但让连接建立了。

目的:我必须处理请求仅包含SIGSTOP值的情况。我的api的调用方未设置Connection time out,因此如果我无法在指定的连接超时值内连接到服务器,则必须抛出异常。

Read time out

0 个答案:

没有答案