Improve error message handling.
diff --git a/Lib/idlelib/rpc.py b/Lib/idlelib/rpc.py
index 615c1f4..8bbc214 100644
--- a/Lib/idlelib/rpc.py
+++ b/Lib/idlelib/rpc.py
@@ -87,13 +87,31 @@
         return self.socket, self.server_address
 
     def handle_error(self, request, client_address):
-        """Override TCPServer method, no error message if exiting"""
+        """Override TCPServer method
+
+        Error message goes to __stderr__.  No error message if exiting
+        normally or socket raised EOF.  Other exceptions not handled in
+        server code will cause os._exit.
+
+        """
         try:
             raise
         except SystemExit:
             raise
-        else:
-            TCPServer.handle_error(request, client_address)
+        except EOFError:
+            pass
+        except:
+            erf = 'sys.__stderr__'
+            print>>erf, '-'*40
+            print>>erf, 'Unhandled server exception!'
+            print>>erf, 'Thread: %s' % threading.currentThread().getName()
+            print>>erf, 'Client Address: ', address
+            print>>erf, 'Request: ', repr(request)
+            traceback.print_exc(file=erf)
+            print>>erf, '\n*** Unrecoverable, server exiting!'
+            print>>erf, '-'*40
+            import os
+            os._exit
 
 
 objecttable = {}