Seite 1 von 1

Exception handeln

Verfasst: Donnerstag 20. November 2008, 16:53
von Dr.Network
Hallo, vielleicht kann mir einer helfen und zwar möchte ich folgende Exception handeln und danach ein Clean up für den entsprechenden Client machen. Wie würde das gehen? VIELEN DANK! :P

Code: Alles auswählen

Server started on port 20000, waiting for connections.
127.0.0.1:2218 connected
<type name='pa_mgr'/>

pa_mgr
{'hook': {},
 'notype': [],
 'pa_mgr': {<bound method MyRequestHandler.sendAnswer of <__main__.MyRequestHandler instance at 0x011A4CB0>>: []}}
got new client type!


----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 2218)
Traceback (most recent call last):
  File "C:\Python25\lib\SocketServer.py", line 464, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Python25\lib\SocketServer.py", line 254, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Python25\lib\SocketServer.py", line 522, in __init__
    self.handle()
  File "d:\Programming\Projekte-Python\Central\server.py", line 172, in handle
    line = self.rfile.readline()
  File "C:\Python25\lib\socket.py", line 346, in readline
    data = self._sock.recv(self._rbufsize)
error: (10054, 'Connection reset by peer')
----------------------------------------

Code: Alles auswählen

class MyRequestHandler(SocketServer.StreamRequestHandler):

....

def handle(self):
        while 1:
            line = self.rfile.readline()
            print line
            if not line:
                break
            line = line.strip()

Verfasst: Donnerstag 20. November 2008, 17:20
von Dauerbaustelle
Hallo,

sollte 'error' die Exception sein, handelst du das so:

Code: Alles auswählen

try:
    <dein code>
except error, data:
    <dein code bei exception>
Gruß

Verfasst: Donnerstag 20. November 2008, 17:43
von Dr.Network
Vielen Dank hab die Lösung nun so:

Code: Alles auswählen

            try:
                line = self.rfile.readline()
            except Exception, errorcode:
                if errorcode[0] == 10054:
                    print "error 10054"

Verfasst: Donnerstag 20. November 2008, 18:01
von Trundle
Du suchst `[mod]socket[/mod].error`. Und anstatt der kryptischen Zahl ``10054`` solltest du die Konstante `[mod]errno[/mod].ECONNRESET` benutzen, da der numerische Wert nicht auf allen Plattformen gleich ist.

Verfasst: Donnerstag 20. November 2008, 18:24
von Dr.Network
Trundle hat geschrieben:Du suchst `[mod]socket[/mod].error`. Und anstatt der kryptischen Zahl ``10054`` solltest du die Konstante `[mod]errno[/mod].ECONNRESET` benutzen, da der numerische Wert nicht auf allen Plattformen gleich ist.
DANKE! :)