]> granicus.if.org Git - python/commitdiff
Improve error message handling.
authorKurt B. Kaiser <kbk@shore.net>
Sat, 22 Mar 2003 19:15:58 +0000 (19:15 +0000)
committerKurt B. Kaiser <kbk@shore.net>
Sat, 22 Mar 2003 19:15:58 +0000 (19:15 +0000)
Lib/idlelib/rpc.py

index 615c1f43bb5dadaa60b0c1828549c812e7a9be96..8bbc2143f1030f84b62b156a380a3cf81a050ca9 100644 (file)
@@ -87,13 +87,31 @@ class RPCServer(SocketServer.TCPServer):
         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 = {}