Here are three network-related exceptions. These were caught by "except" with no exception type, because none of the more specific exceptions matched. This is what a traceback produced:
1. File "D:\Python24\lib\socket.py", line 295, in read data = self._sock.recv(recv_size) timeout: timed out 2. File "D:\Python24\lib\socket.py", line 295, in read data = self._sock.recv(recv_size) error: (10054, 'Connection reset by peer') 3. File "D:\Python24\lib\socket.py", line 317, in readline data = recv(1) IOError: [Errno socket error] timed out For 1 and 2, those are errors that aren't in the exception hierarchy. Looking at the C code for "socketmodule.c", it's clear that "socket.error" doesn't inherit from any standard exception class. See, in "init_socket()": socket_error = PyErr_NewException("socket.error", NULL, NULL); That first NULL should be some parent exception, maybe "IOError". As it is, "socket.error" is outside the standard exception hierarchy. That's not too good. Case #3, IOError, should have been caught by this: except IOError, message: # I/O error But it wasn't. The "IOError" fell through, was caught by the next outer exception block, and was logged as a generic error. I can't find where in the Python socket module an "IOError" could be raised. I would have expected "socket.timeout". Anyway, I need to know the full set of exceptions that can be raised by sockets. Thanks. John Nagle -- http://mail.python.org/mailman/listinfo/python-list