On 30/09/10 13:44, Phil Mayers wrote: > This is because (as you've discovered) there are circumstances when a > function is called in Twisted where the exception can't propagate "up" > to the caller, because the caller is no longer higher in the call stack. > Most prominent is reactor.callLater.
One quick thing you might be able to do is use t.i.task.deferLater instead of reactor.callLater, like so: def doStuff(): breakobj = Break() d = task.deferLater(reactor, 2, breakobj) return d task.deferLater will schedule the call, but runs the call in a context which means any exceptions raised flow down the deferred errback. This: @inlineCallbacks def loop(): try: yield doStuff() except Exception, e: log.err(e) ...will then work, and "see" the exception. _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python