关于if(socket!= null)socket.close();

时间:2018-10-23 09:17:22

标签: java sockets networking

在第一次学习网络时,我发现了一些有关套接字的示例。 但是我不明白“ 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)的意思。 是否存在某些未知异常?

(对不起,我的英语不好。因为我不是英语本地人。)

1 个答案:

答案 0 :(得分:0)

托马斯是正确的,您不想在空对象上调用socket.close()。

最后,块总是在try块之后执行,无论它们是否无例外地完成所有任务或是否抛出异常。

如果在套接字为null的情况下到达了finally块,则无需对资源做任何事情。