所以我有一个线程来接收来自客户端的数据。有一个 ObjectInputReader 来读取这个数据。如果在我的 try-catch 中无法初始化 ObjectInputReader,如果客户端在没有通知服务器的情况下断开连接会发生什么,try-catch 应该调用异常。
所以我在 Catch-Statement 中处理了我的“断开连接客户端”。但它永远不会发生。
但是,如果我在调试时运行服务器并在 Catch-Statement 中设置断点,那么就会发生异常,并且一切都按照我的意愿进行处理。但只有断点,永远不会没有(调试或发布)。
我正在使用eclipse,我认为是最新版本。
有人碰巧有这个“错误”吗?还是我做错了什么?
private static Runnable receive = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
ObjectInputStream ois;
while(true)
{
for(int i = 0; i < listSockets.size();i++){
try {
ois = new ObjectInputStream(listSockets.get(i).getInputStream());
int receiveState = (Integer)ois.readObject();
DataPackage dp = (DataPackage)ois.readObject();
listData.set(i,dp);
if(receiveState == 1){ //client disconnected by user
disconnectClient(i);
i--;
}
ois.close();
} catch (IOException | ClassNotFoundException e) {
disconnectClient(i);
i--;
}
}
}
}
};