vit...@synapticvision.com wrote: [...] > def abc1(self): > if t.test() is None: > raise Exception("Error11") > else: > d = defer.Deferred() > d.callback(1) > return d > > > and basically, I've expected in case of exception > self.handleFailure1() to be called, but I don't see it happen.
This is a function that either returns a Deferred or raises an exception. This isn't a Twisted issue, it's simply a Python one: in “func1().func2()”, if func1 raises an exception then func2 will not be invoked. That's fundamental to what raising an exception in Python means. If you want to convert this to something that always returns a Deferred, you can either rewrite it, e.g. using “return defer.fail(Exception('Error11'))”, or use maybeDeferred which will intercept exceptions for you, e.g.: return ( maybeDeferred(self.abc1). addErrback(self.handleFailure1). # etc... ) You can find maybeDeferred in the twisted.internet.defer module. -Andrew. _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python