繁体   English   中英

给出“无法访问的代码”错误

[英]Giving “unreachable code” error

美好的一天。 有人可以帮我吗。 我似乎找不到解决此问题的方法。 我不知道为什么在关闭InputStream和套接字时会出现“无法访问的代码”错误。

感谢您的帮助。

 public void run() {
          try {
           socket = new Socket(dstAddress, dstPort);

           ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1024);
           byte[] buffer = new byte[1024];

           int bytesRead;
           InputStream inputStream;

           while (true) {
                inputStream = socket.getInputStream();

                while ((bytesRead = inputStream.read(buffer)) != -1){
                    byteArrayOutputStream.write(buffer, 0, bytesRead);
                    response += byteArrayOutputStream.toString("UTF-8");
                }
                textResponse.setText(response);
                if(response == "Server: You are connected to Android Server"){
                    Log.v("ok","ppp");
                }
                if(response == "OK"){
                    Log.v("ok","ooo");
                }
           }

           inputStream.close();    --------unreachable code
           socket.close();         --------unreachable code

          } catch (UnknownHostException e) {
           e.printStackTrace();
           response = "UnknownHostException: " + e.toString();
          } catch (IOException e) {
           e.printStackTrace();
           response = "IOException: " + e.toString();
          }
  }

while (true) {}是一个无休止的循环,您没有脱离它,因此这两个close()语句不可访问。

while循环内满足条件while ,可以使用break; 语句以继续执行while范围以下的代码。

t while(条件){inputStream = socket.getInputStream();

                while ((bytesRead = inputStream.read(buffer)) != -1){
                    byteArrayOutputStream.write(buffer, 0, bytesRead);
                    response += byteArrayOutputStream.toString("UTF-8");
                }
                textResponse.setText(response);
                if(response == "Server: You are connected to Android Server"){
                    Log.v("ok","ppp");
                }
                if(response == "OK"){
                    Log.v("ok","ooo");
                }
           }

您的while (true)一直在循环播放。 您需要花点时间去下一行。 在您的情况下,由于不会结束,因此不会转到下一行。 您可以更改,而如果它它不是循环语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM