http://www.python.org/dev/peps/pep-3151 define exception classes like ConnectionError and BrokenPipeError We need to refactor stdlib to use that shiny new exceptions instead of checking errno values if possible. Also maybe we need to add some absent exceptions. I guess NotConnectedError for ENOTCONN, which should be ConnectionError subclass.
I would support adding ENOTCONN under the ConnectionError umbrella. It is caught for shutdown() calls in a few standard library modules. Here is a demo showing how to trigger it (at least on Linux): from socket import create_connection, SHUT_RDWR from socketserver import TCPServer, BaseRequestHandler from threading import Thread server = TCPServer(("", 0), BaseRequestHandler) Thread(target=server.serve_forever).start() client = create_connection(server.server_address) server.shutdown() # Ensure server has closed client connection server.server_close() client.send(bytes(1)) >>> client.shutdown(SHUT_RDWR) Traceback (most recent call last): File "", line 1, in OSError: [Errno 107] Transport endpoint is not connected