我有一个从缓冲读取器中读取的示例:
while ((inputLine = input.readLine()) != null) {
System.out.println("I got a message from a client: " + inputLine);
}
循环中的代码
println
将在缓冲读取器(在本例中为input
)中出现任何内容时执行。在我的情况下,如果客户端应用程序向套接字写入任何内容,则会执行服务器应用程序中循环中的代码。但我不理解它是如何工作的。
inputLine = input.readLine()
会等待直到缓冲读取器中出现内容,并且当有内容出现时,它会返回true
并执行循环中的代码。但是,null
也可能被返回。还有一个问题。上述代码来自一个
throws Exception
方法,我在Thread的run方法中使用此代码。当我尝试在run
之前放置throws Exception
时,编译器会抱怨:覆盖的方法不会抛出异常。没有throws exception
,编译器会抱怨未报告的异常。那么,我该怎么办?