markus espenhain wrote:
i've written a tcp client - using a derived NetstringReceiver, a ReconnectingClientFactory and just reactor.connectTCP + reactor.run.
the problem is that after the connection is made - every exception that occurred seems to be lost and the execution at this point discontinues - also with a try/catch block around it
class MyProtocol(basic.NetstringReceiver): ... def onData(self, data): print data try: print 'before' # printed raise Exception('err') except Exception, e: print e # nothing print 'after' # nothing
after print 'before' nothing more in onData happens - anyway the app runs and on new data the onData is entered again
i poke around 2h or so and i can't remember to had this problem before ... so anybody can give me a hint or maybe something that i miss?
I'm guessing this isn't literally code you've tried to run, because that will always print e and 'after'. There's nothing in Twisted that changes the way Python's exception handling works.
Taking a guess that by “raise Exception('err')” you mean you call a function that somehow raises an exception your “except Exception:” block fails to catch, perhaps try a bare “except:”. It might be a string exception.
Otherwise, I'd try making as minimal an example of the problem as you can that can reproduce the problem, and if you're still stuck, posting that to this list (or if it doesn't involve Twisted, comp.lang.python). Or use “import pdb; pdb.set_trace()” to insert a breakpoint and step through the code in the debugger.