gpt4 book ai didi

java - 虽然 Java 中的 try/catch 打破了 true 循环

转载 作者:行者123 更新时间:2023-12-01 21:38:31 24 4
gpt4 key购买 nike

我是网络初学者,正在努力在我的游戏中实现它,它大部分工作正常,但在客户端中,我的循环接收数据包正在停止 try catch 。这是代码:

public void run() {
while(true){
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
try {
socket.receive(packet);
}catch(IOException e){
e.printStackTrace();
}

this.parsePacket(packet.getData(), packet.getAddress(), packet.getPort());
}
}

调试后我发现循环没有通过 try catch 语句。(但 try 被激活一次,看起来没有错误)。

最佳答案

首先,您提供的循环条件不是变量,您直接使用了 boolean 值true。这可能是无限循环的情况。

 while(true){..... // yourCode ....}

即使 socket.receive(packet); 行引发 IOException,循环也会继续,因为此异常由 catch() 处理> 阻止。

这意味着它将执行直到该行引发任何异常

this.parsePacket(packet.getData(), packet.getAddress(), packet.getPort());

现在,您的问题是这个方法 public void receive(DatagramPacket p) 实际上,该方法将一直工作,直到收到 datagram ,但您的循环将继续,直到引发异常,直到 this.parsePacket() 方法引发异常。

So, please change your conditional statement such that if datagram is no more present then loop must be terminated.

关于java - 虽然 Java 中的 try/catch 打破了 true 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36684322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com