在第一次学习网络时,我发现了一些有关套接字的示例。 但是我不明白“ if(socket!= null)”的意思。
然后..这是代码。
import java.net.ServerSocket;
import java.net.Socket;
public class MainClass {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
try {
serverSocket = new ServerSocket(9000);
socket = serverSocket.accept();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// Here it is
if(socket != null) socket.close();
if(serverSocket != null) serverSocket.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
在最后{try ....块中,我无法理解if(socket!= null)的意思。 是否存在某些未知异常?
(对不起,我的英语不好。因为我不是英语本地人。)
答案 0 :(得分:0)
托马斯是正确的,您不想在空对象上调用socket.close()。
最后,块总是在try块之后执行,无论它们是否无例外地完成所有任务或是否抛出异常。
如果在套接字为null的情况下到达了finally块,则无需对资源做任何事情。