簡體   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