当前位置: 首页 > 知识库问答 >
问题:

SocketTimeoutException被指示为无法访问

皇甫乐
2023-03-14

下面是我试图编写的java应用程序的一小部分:

Socket socket = new Socket(hostname, portnumber);
DataInputStream socketInput = new DataInputStream(socket.getInputStream());
try{
    socket.setSoTimeout(10000);
    try{
        byte[] msgHeader = new byte[4];
        if (socketInput.read(msgHeader) != -1)
        {
            // process message
        }
    }
    catch (IOException e)
    {
        // process exception
    }
    catch (SocketTimeoutException ste)
    {
        // process exception
    }
}
catch (SocketException se)
{
    // process exception
}

我收到一个错误,说明catch(SocketTimeoutException)不可访问。我想建立套接字超时以防止套接字read()永远阻塞,如果发生SocketTimeoutException,我的应用程序将尝试建立到下一个可用服务器的套接字连接并尝试相同的read()操作。

我非常感谢提供的任何帮助,因为我尝试使用不同的IO类但没有成功。

共有1个答案

谈琦
2023-03-14

由于SocketTimeoutExceptionIOException的子类,因此控件永远不会到达捕获SocketTimeoutException的catch块。异常将始终被IOException catch block捕获更改那些catch block的位置:

 catch (SocketTimeoutException e)
    {
        // process exception
    }
    catch (IOException ste)
    {
        // process exception
    }
 类似资料:
  • 问题内容: 我让ELK堆栈在VM内的docker容器中运行。 我可以向ES填充,它可以在Kibana中显示。 我可以使用Logstash读取文件并将其输出到stdout。 但是Logstash无法将数据发送到ES (启用或禁用xpack似乎没有什么不同) 输出 之后,它会在“发送批量请求”,“执行运行状况检查”,“尝试复活”和“意外的池错误”之间保持循环。 随着每一次的同时,我也看到了 问题答案:

  • 问题内容: 我们的Java EE应用程序已开始遇到一些严重问题。具体来说,应用程序在启动后的几分钟内最多可运行99%的旧堆栈。没有抛出OOM,但实际上JVM没有响应。jstat显示老一代的大小根本没有减小,没有垃圾收集正在进行,并且kill -3表示: VM选项包括: (为了解决此问题,我将其从拥有2300m堆/ 1800m新一代设备中更改了) 一旦JVM进入“内存不足”状态(永久保存),就对它进

  • 目标图片:https://img.alicdn.com/imgextra/O1CN01MW6Bpi1KJXbwTYrw5_!!2216508591143.jpg 发现这个图片可以直接在浏览器打开,在我的 mac 上也可以使用 wget 直接下载 但是因为我的服务是部署在 aliyun 的 ack,但是我发现在 aliyun ack 访问这个图片居然就是 420 ! 写了下面的测试代码 上面的代码,

  • 本文向大家介绍iis提示您指定的网页无法访问! 错误类型:500,包括了iis提示您指定的网页无法访问! 错误类型:500的使用技巧和注意事项,需要的朋友参考一下 首先我们需要明白IIS 500错误的原因,只有知道了原因,我们才能够对症下药,解决问题。很多朋友在遇到问题后就非常的郁闷,稀里糊涂的乱搞一通,结果还是搞不定,这样不仅仅打击自己的自信心也会让自己养成浮躁的心理是非常不好的。下面我们来简要

  • 我刚使用System.io,我不明白为什么我的代码会导致这个异常。我想检查一个目录和一个文件是否存在,如果不存在,我想创建它们。之后,我想在我刚创建的文件上写点东西。在这里它抛出异常。我非常确信,当im试图使用StreamWriter时,创建会导致异常,因为如果该文件已经存在,我不会得到一个执行。此外,当我在一次尝试失败后再次单击调用此funktion的按钮时,没有任何例外,并且一切都运行良好(看

  • 以下是启动本地计算机kubernetes集群的指南:http://kubernetes.io/v1.0/docs/gett-started-guides/docker.html 我用。yaml文件创建了各种POD,一切正常,我可以使用容器IPs访问nginx和mysql(172.17.x.x范围内,使用docker0),但是当我创建服务时,服务IPs在10.0.0.x范围内,其他容器无法访问。 k