On Wed, Mar 30, 2011 at 4:50 PM, Jasper St. Pierre
<[email protected]> wrote:
> The problem that I have is that errback flow is awkward... the main
> difference is that addCallbacks will call the errback if its own callback
> fails, right? I can only see that really being useful by accident.
>
Not really.
# 1. Handle error then do the action anyway.
deferred = order_food()
deferred.addErrback(handle_error)
deferred.addCallback(do_action)
# 2. Handle the error but do the action only if
# the error doesn't occur.
deferred = order_food()
deferred.addCallbacks(do_action, handle_error)
# 3. Handle the error for the entire operation.
deferred = order_food()
deferred.addCallback(do_action)
deferred.addErrback(handle_error)
# 4. Do something regardless of success or failure.
deferred = order_food()
deferred.addBoth(do_cleanup)
These are analogous to:
# 1. Handle error then do the action anyway.
try:
value = order_food()
except:
handle_error()
do_action(value)
# 2. Handle the error but do the action only if the error doesn't occur.
try:
value = order_food()
except:
handle_error()
else:
do_action(value)
# 3. Handle the error for the entire operation.
try:
value = order_food()
do_action(value)
except:
handle_error()
# 4. Do something regardless of success or failure.
try:
value = order_food()
finally:
do_cleanup()
>From <http://mumak.net/stuff/twisted-intro.html>.
jml
PS. Please don't top post to this list.
_______________________________________________
Twisted-Python mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python