SocketTimeoutException

SocketTimeoutException

说我有一个名为SuperSocket的套接字变量,有什么办法可以捕获超时异常?

       SuperSocket.setSoTimeout(5000);

       catch (SocketTimeoutException e){
        System.out.println("Timeout");
        System.exit(1);
    }

最佳答案

您似乎不了解setSoTimeout()的功能以及何时会抛出该异常。

从Javadoc:(http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html)



只能在对SocketTimeoutException的基础Socket进行阻塞读取并且在指定时间内未接收到数据(导致读取...超时)时,才抛出InputStream(然后捕获)。

superSocket.setSoTimeout(5000);
InputStream is = superSocket.getInputStream();
int i;
try {
    i = is.read();
} catch (SocketTimeoutException ste) {
    System.out.println("I timed out!");
}

编辑添加:实际上还有另外一次可能引发异常,那就是如果您要调用Socket.connect()的两个参数版本来提供超时。

关于java - 如何捕获SocketTimeoutException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13736899/

10-09 04:46