2016-11-08 1 views
0

내가 자바는이 설명서 사용하여 네트워크 배우려고 노력하고 있어요 슬로우 - 나는 "잡은 또는 슬로우 선언해야"이 라인에서받을 이유는 무엇 http://duta.github.io/writing/StartingNetworking.pdfJava 예외가

를 (이 ServerSocket의입니다 설명서의 일부). 설명서의 코드가 작동하는 것으로 가정되는 이유는 무엇입니까?

Socket socket = serverSocket.accept(); 

전체 코드 :

public class ChatServer 
{ 
    public static void main(){ 
     ServerSocket serverSocket = null; 
     boolean successful = false; 
     int port = 8080; 
     try{ 
     serverSocket = new ServerSocket(port); 
     successful = true; 
     }catch(IOException e){ 
      System.err.println("Port " + port + "is busy, try a different one"); 
     } 
     if(successful){ 
      Socket socket = serverSocket.accept(); 
      PrintWriter toClient = new PrintWriter(socket.getOutputStream(), true); 
      BufferedReader fromClient = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
      String toProcess; 
      while((toProcess = fromClient.readLine()) != null) 
      { 
       if(toProcess.equalsIgnoreCase("Stop")) 
        break; 
      String processed = "Echo: " + toProcess; 
      toClient.println(processed); 
      } 
      toClient.close(); 
      fromClient.close(); 
      socket.close(); 
      serverSocket.close(); 
     } 

    } 
} 
+1

자습서에서'main()'의 정의를 살펴보십시오. 당신은 당신의 코드에서'throws Exception'을 발견 할 것입니다. Btw, 예외를 처리하는 데 문제가 있거나 클라이언트 - 서버 응용 프로그램으로 시작하는 문제를 이해하는 데 몇 단계를 건너 뛸 수 있습니다. 즉, 먼저 기본 학습을 시작하고자 할 수 있습니다. – Thomas

답변

0

예외가 잡힐 또는 선언해야 하나를 검사하였습니다. 체크되지 않은 예외 (RuntimeException 또는 그 자식)는 잡히거나 선언 될 필요가 없습니다.

serverSocket.accept()를 호출하면 확인 예외가 발생할 수 있습니다. "throws ... Exception"이것은 catch 블록을 사용하여 catch하거나 선언해야하며 accept() 메소드에서 수행 한 것과 같습니다.

관련 문제