以下是大多数相关代码,在带有FRC Java映像的cRIO上运行:
try {
SocketConnection http = (SocketConnection) Connector.open("socket://" + BEAGELIP);
InputStream data = http.openInputStream();
database = "";
int p = data.read();
while (p >= 0) {
database += (char) p;
p = data.read();
}
data.close();
http.close();
} catch (Exception e) {
System.out.println(e);
}
正在反复调用此方法。
重复连接失败后(例如,服务器未插入),IOException从java.io.IOException: ConnectException: connect refused
切换到java.io.IOException: errno: 24 on fd:-1 during socket create
我们认为可能发生这种情况的原因是因为失败时Connector.open
返回null,我们不能close()
,冻结文件描述符。
在此过程中阻止所有文件描述符被用尽的正确方法是什么?
如果有人能就如何做到这一点提出建议,那就太好了。
答案 0 :(得分:0)
你的关闭必须在finally {}块中。否则,如果发生异常,它们就不会发生,并且迟早会有例外,