try (PrintWriter out = new PrintWriter(socket.getOutputStream(), true);BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));) {String inputLine, outputLine;KnockKnockProtocol kkp = new KnockKnockProtocol();outputLine = kkp.processInput(null);out.println(outputLine);while ((inputLine = in.readLine()) != null) {outputLine = kkp.processInput(inputLine);out.println(outputLine);if (outputLine.equals("Bye"))break;}socket.close();} catch (IOException e) {e.printStackTrace();}这段代码改为
2 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
首先你要清楚try(){}第一个括号里面是干什么的,这个括号在JDK1.7之前是没有的,是1.7的新特性,括号里的内容支持包括流以及任何可关闭的资源,数据流会在 try 执行完毕后自动被关闭,而不用我们手动关闭了
呼唤远方
TA贡献1856条经验 获得超11个赞
因为有些代码在编译的时候就会检测会不会有明显的,也就是eclipse预定义的一些exception
所以需要你给抛出异常,你如果写外面是不会抛出这些异常的,所以编译时会报错,不过你如果不想写try里面,你可以在方法上写Throws Exception,
这样就可以不写try块
如果你非要加,可以如下这样加,但没什么意义
try ( PrintWriter out = new PrintWriter(socket.getOutputStream(), true ); BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream())); ) { try { String inputLine, outputLine; KnockKnockProtocol kkp = new KnockKnockProtocol(); outputLine = kkp.processInput( null ); out.println(outputLine); while ((inputLine = in.readLine()) != null ) { outputLine = kkp.processInput(inputLine); out.println(outputLine); if (outputLine.equals( "Bye" )) break ; } socket.close(); } catch (IOException e) { e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } |
添加回答
举报
0/150
提交
取消