2014-11-04 2 views
2

저는 오랫동안이 점에 대해 궁금해했고, ServerSocket.close()를 호출 할 수있는 예외를 잡아 냈습니다. 그러나, 한번 예외를 던지는 것을 보지 못했습니다.ServerSocket.close(). 언제 예외가 발생합니까?

Javadocs 상태 : 내가 말했듯이

Throws: 
    IOException - if an I/O error occurs when closing the socket. 

그러나, 나는 예외를 던지는을 본 적이 없다. 어떤 상황에서 serversocket을 닫는 동안 I/O 오류가 발생합니까? 내가 대답을 위해 인터넷을 검색 한

public void terminate() { 
    try { 
     serverSocket.close(); 
    } catch (IOException ex) { 
     System.err.println(ex.getMessage()); // when and how? 
    } 
} 

하지만,이 명확 것 아무것도 올 수없는 : 당신은 손에있는 코드는 다음과 같은 가정 할 수 있습니다.

+0

@OlaviMustanoja 정말 구현에 따라 다릅니다. 수많은 소켓 구현이 있으며 각각 독립적 인 오류가있을 수 있습니다. 또한 IOException 꽤 광범위 하 고 원하는 I/O 기반 오류를 던져 그것을 적절 하 게 처리하는 구현 구현 방법처럼 보인다. – Obicere

+0

@Obicere이 점을 이해합니다. 내가 묻는 것은, 언제 ServerSocket.close()가 IOException을 던질 것인가? 나는 다른 많은 구현에 대해 신경 쓰지 않는다. –

+0

@OlaviMustanoja 정확하게 지정해야합니다. 문자 그대로 :'IOException -이 소켓을 닫을 때 I/O 오류가 발생하는 경우''SocketImpl' 구현에 따라 달라집니다. – Obicere

답변

3

소켓을 닫으려고하면 소켓이 이미 닫혀 있으면 IOException이 던져 질 것입니다.

+0

이 동작을 확인할 수 없습니다. 두 번 호출 socket.close() _not_ throw (java8) 않습니다. – Heri

관련 문제