qq_遁去的一_1
2022-02-17 11:11:09
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貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
首先你要清楚try(){}第一個(gè)括號(hào)里面是干什么的,這個(gè)括號(hào)在JDK1.7之前是沒有的,是1.7的新特性,括號(hào)里的內(nèi)容支持包括流以及任何可關(guān)閉的資源,數(shù)據(jù)流會(huì)在 try 執(zhí)行完畢后自動(dòng)被關(guān)閉,而不用我們手動(dòng)關(guān)閉了

呼喚遠(yuǎn)方
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊
因?yàn)橛行┐a在編譯的時(shí)候就會(huì)檢測(cè)會(huì)不會(huì)有明顯的,也就是eclipse預(yù)定義的一些exception
所以需要你給拋出異常,你如果寫外面是不會(huì)拋出這些異常的,所以編譯時(shí)會(huì)報(bào)錯(cuò),不過你如果不想寫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(); } |
添加回答
舉報(bào)
0/150
提交
取消