multithread exception handling
Piet van Oostrum
piet at cs.uu.nl
Tue Sep 20 09:07:47 EDT 2005
>>>>> pegazik at gmail.com (p) wrote:
[Timer example snipped]
>p> My question is, why exception is not raised correctly? Could be the
>p> reason that (probably) timer is another thread and there is no
>p> exception in the main thread?
yes, the doc of Timer says it is a subclass of Thread, and therefore runs in
a new thread.
By the way, your program isn't even correct Python, so how can it give the
output you have written down?
When I run a similar (but corrct python) program, I do get an exception,
but it is in another thread, and therefore not caught.
You can post a signal to the main thread, however, to catch the exception:
def TimeoutHandler():
print '!'
os.kill(0, signal.SIGUSR1)
def handler():
raise Exception
class Active:
def __init__(self):
signal.signal(signal.SIGUSR1, handler)
timer = Timer(1, TimeoutHandler)
etc.
--
Piet van Oostrum <piet at cs.uu.nl>
URL: http://www.cs.uu.nl/~piet [PGP 8DAE142BE17999C4]
Private email: piet at vanoostrum.org
More information about the Python-list
mailing list