[Tutor] Callbacks and exception handling
steve at pearwood.info
Fri Aug 13 04:09:54 CEST 2010
On Fri, 13 Aug 2010 11:56:31 am Pete wrote:
> I've been writing some code which uses callbacks. I have not used
> callbacks much before, but it does not seem too difficult so far.
> One thing though - I noticed that when an exception is raised in the
> callback function, that exception doesn't actually "show up" in the
> calling program.
> Two questions:
> 1) Theoretically - why is this? I guess I've seen callback functions
> a little like subroutines, therefore it seems intuitive that an
> exception would be propagated up to the calling routine.
They are, unless the calling function explicitly catches and subpresses
> 2) How can you catch an exception in the callback function?
The same way you catch an exception anywhere: with a try...except block.
If you are writing a callback function, and want to catch your own
except (KeyError, ValueError, TypeError): # or whatever
If you are writing the calling function:
def caller(arg, callback):
except (AttributeError, RecursionError): # or whatever
By the way, don't be tempted to write a bare except clause:
There are very few reasons for such a thing, as they are too broad and
catch too many things, masking errors, preventing user keyboard
interrupts, etc. Avoid them.
More information about the Tutor