
On 30/09/2010 14:39, Jonathan Lange wrote:
On Thu, Sep 30, 2010 at 2:36 PM, Chris Withers<chris@simplistix.co.uk> wrote: ...
Is there any way I can get both errbacks *and* exceptions handled nicely in my `loop` call?
You know about defer.maybeDeferred, right?
Yep, the problem is with `loop` implemented like so: def loop(): d = maybeDeferred(doStuff) d.addErrback(partial(log.err,_why='Unhandled scheduled exception')) ...the logging is odd: 2010-09-30 15:07:03,161 ERROR : log (22194|7f41910b26e0): Unhandled Error Traceback (most recent call last): File "test_looping.py", line 47, in <module> reactor.run() File "/twisted/internet/base.py", line 1166, in run self.mainLoop() File "/twisted/internet/base.py", line 1175, in mainLoop self.runUntilCurrent() --- <exception caught here> --- File "/twisted/internet/base.py", line 779, in runUntilCurrent call.func(*call.args, **call.kw) File "test_looping.py", line 30, in __call__ del self.connector exceptions.AttributeError: Break instance has no attribute 'connector' called 4 called 5 /twisted/internet/defer.py:262: DeprecationWarning: Don't pass strings (like 'Break!') to failure.Failure (replacing with a DefaultException). fail = failure.Failure(fail) 2010-09-30 15:07:05,167 ERROR : log (22194|7f41910b26e0): Unhandled scheduled exception Traceback (most recent call last): Failure: twisted.python.failure.DefaultException: Break! So, how come my log.err doesn't get used for the AttributeError on connector? cheers, Chris