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?
}
}
我已經在網上搜索一個答案,但無法拿出任何會澄清這一點。如果當您嘗試關閉套接字已關閉
@OlaviMustanoja這真的取決於實現。有許多套接字實現,它們可能都有獨立的錯誤。此外,IOException相當廣泛,似乎更像是實現拋出任何基於I/O的錯誤並使其正確處理的方式。 – Obicere 2014-11-04 02:42:15
@Obicere我明白這一點。我問的是,什麼時候ServerSocket.close()拋出IOException?我不關心其他許多實現。 – 2014-11-04 02:44:01
@OlaviMustanoja恰好在指定時。毫不誇張地說:'IOException - 如果關閉此socket.'它確實依賴於'SocketImpl' – Obicere 2014-11-04 02:46:13