I installed a sys.excepthook in my project at work that uses the logging module to record any uncaught exceptions. It didn't work. I did what any lazy programmer would do: ask someone more experienced. "Do you have to set sys.excepthook in each thread?" I asked, more-or-less. "I don't think so," he replied. Hmm. Maybe the developer I'd taken over from was setting excepthook later on in the initialization or somewhere else. ... Nope. Finally I wrote this: import sys, threading def log_exception(*args): print 'got exception %s' % (args,) sys.excepthook = log_exception def foo(): a = 1 / 0 threading.Thread(target=foo).start() Playing with this a bit demonstrates that sys.excepthook doesn't work in subthreads, at all . The documentation doesn't mention anything of the sort. Smells like a bug to me. (I did file one .) I belatedly googled "sys.excepthook threads." (I must have been a bit slow this morning to no...