1

这是一个基本的 Java 服务器(源代码),但我不太明白,因为我对这while(true)部分很好奇,它什么时候终止?

public static void main(String[] args) throws IOException {
    ServerSocket listener = new ServerSocket(9090);
    try {
        while (true) {
            Socket socket = listener.accept();
            try {
                PrintWriter out =
                    new PrintWriter(socket.getOutputStream(), true);
                out.println(new Date().toString());
            } finally {
                socket.close();
            }
        }
    }
    finally {
        listener.close();
    }
}

我们将如何到达最后一部分,即

finally {
        listener.close();

或者它只是标准的网络代码,拥有while(true)

4

1 回答 1

2

如果抛出异常,循环将被打破。

Java中与IO相关的代码,当它失败时,几乎总是会抛出一个异常,指出它失败的原因。例如,您可以在http://docs.oracle.com/javase/6/docs/api/java/io/package-summary.html中查找正在调用的方法,并查看它可以抛出哪些异常。

while(true)是守护进程、服务器等的常用习惯用法,您希望永远不会停止运行,或者您以抛出异常的形式停止。

于 2013-03-13T22:23:07.443 回答