This is it! Thank you.

Quoting "Andrew Bennetts" <and...@bemusement.org>:

> 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
>



_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to