这是一个基本的Java服务器(source),但我不太明白,因为我对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)
?
答案 0 :(得分:2)
如果抛出异常,循环将被打破。
Java中与IO相关的代码,当它失败时,几乎总会抛出异常,表明它失败的原因。您可以在http://docs.oracle.com/javase/6/docs/api/java/io/package-summary.html中查找被调用的方法,并查看它可以抛出的异常,例如。
while(true)
是守护进程,服务器等主要循环的常用习惯用法,您希望它们永远不会停止运行,或者以抛出异常的形式停止。