[Python-Dev] What exception should Thread.start() raise?

BJörn Lindqvist bjourne at gmail.com
Mon Jun 4 21:32:14 CEST 2007


The threading module contains buggy code:

class Thread(_Verbose):
    ...
    def start(self):
        assert self.__initialized, "Thread.__init__() not called"
        assert not self.__started, "thread already started"
    ...

If you run such code with python -O, weird stuff may happen when you
call mythread.start() multiple times. -O removes assert statements so
the code won't fail with an AssertionError which would be expected.

So what real exception should Thread.start() raise? I have suggested
adding an IllegalStateError modelled after java's
IllegalStateException, but that idea was rejected. So what exception
should be raised here, is it a RuntimeError?

-- 
mvh Björn


More information about the Python-Dev mailing list