On 6/4/07, BJörn Lindqvist <[EMAIL PROTECTED]> wrote: > 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?
If you want to be fully backwards compatible, you could just write this like:: def start(self): if not self.__initialized: raise AssertionError("Thread.__init__() not called") if self.__started: raise AssertionError("thread already started") But I doubt anyone is actually catching the AssertionError, so changing the error type would probably be okay. STeVe -- I'm not *in*-sane. Indeed, I am so far *out* of sane that you appear a tiny blip on the distant coast of sanity. --- Bucky Katt, Get Fuzzy _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com