[Patches] [ python-Patches-1685642 ] Add IllegalStateError

SourceForge.net noreply at sourceforge.net
Wed Apr 11 19:36:59 CEST 2007


Patches item #1685642, was opened at 2007-03-21 19:25
Message generated for change (Comment added) made by rhettinger
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1685642&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Björn Lindqvist (sonderblade)
>Assigned to: Guido van Rossum (gvanrossum)
Summary: Add IllegalStateError

Initial Comment:
Java has an exception called IllegalStateException. It is very useful for signaling "what you did would have been OK, but right now I can't do it." Python does not have a counterpart, but I think it should.

For example, if you have a Python RDBMS-binding and you call db.select() before calling db.connect() it could raise a IllegalStateError (or maybe a subclass of it) that says 'IllegalStateError: "Must be connected to perform queries"'. 

Or for another example, take the Thread.start() function. Currently, if you call myThread.start() twice it will raise an AssertionError. That's no good because the result is undefined if you run python with -O. See Bug #904498 and Patch #1676820 (Martin v. Löwis comment). IllegalStateError should fit perfectly here:

>>> t = threading.Thread()
>>> t.start()
>>> t.start()
Traceback (most recent call last):
  ...
IllegalStateError: thread already started

----------------------------------------------------------------------

>Comment By: Raymond Hettinger (rhettinger)
Date: 2007-04-11 12:36

Message:
Logged In: YES 
user_id=80475
Originator: NO

Guido, would you pronounce on this?  I think the existing framework is
fine and adding a new standard exception would be unnecessary clutter.


----------------------------------------------------------------------

Comment By: Björn Lindqvist (sonderblade)
Date: 2007-03-26 11:29

Message:
Logged In: YES 
user_id=51702
Originator: YES

Georg, do you think that I should change the patch so that
IllegalStateError sublcasses RuntimeError instead? 

Changing exceptions in the Standard Library to IllegalStateError would be
part 2 of the patch. I don't think that should cause any trouble - only
exceptions like AssertionError or base Exceptions would be changed. That's
why I hope it can go into python 2.x. But bringing it up on the
mailing-list is still required I guess.

----------------------------------------------------------------------

Comment By: Georg Brandl (gbrandl)
Date: 2007-03-23 13:41

Message:
Logged In: YES 
user_id=849994
Originator: NO

In principle this is a good idea -- currently there's no guideline what to
raise in such a situation.
Some libraries raise RuntimeError (probably a new exception should be made
subclass thereof), some
do assertions, some raise custom exceptions.

However, for this to be a complete patch, you'd have to find all those
places where IllegalStateError
would be appropriate. Also, switching to it would be a Py3k thing,
provided that this breakage is
suffered by python-dev.

In any case, I think you should bring it up on the python-3000 mailing
list -- otherwise this will
never be decided upon.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1685642&group_id=5470


More information about the Patches mailing list