At 12:12 PM 7/31/2005 -0400, James Y Knight wrote: >On Jul 30, 2005, at 8:57 PM, Nick Coghlan wrote: > > I wouldn't mind using Exception/Error instead of Raisable/Exception > > - and it > > seriously reduces the pain of making this transition. Indeed, most > > of it > > becomes doable within the 2.x series - the only tricky parts are > > semantic > > changes involved with moving the KeyboardInterrupt, MemoryError and > > SystemError out from under StandardError, and moving EOFError under > > IOError. > >It seems to me that it *increases* the pain of transition. >I do not see any reason why adding a new class above the current >hierarchy causes any problems. However, changing the recommended base >class for user-defined exceptions from "Exception" to "Error" will >cause problems for *every* library.
I think you're ignoring the part where most exception handlers are already broken. At least adding CriticalException and ControlFlowException makes it possible to add this: try: ... except (CriticalException,ControlFlowException): raise except: ... This isn't great, I admit, but at least it would actually *work*. I also don't see how changing the recommended base class from Exception to Error causes *problems* for every library. Sure, it forces them to move (eventually!), but it's a trivial change, and makes it *possible* to do the right thing with exceptions (e.g. except Error:) as soon as all the libraries you depend on have moved to using Error. >Moving KeyboardInterrupt, MemoryError, and SystemError out from under >Exception will be a backwards compatibility issue, but that's the >case in all proposals. Actually, in my tweak of Nick's proposal they're still Exception subclasses, so nothing breaks. >Additionally, I predict the pain from doing >that will be minor. In cases where apps want to catch *all* >exceptions, they must already use "except:" instead of "except >Exception:", as not all exceptions derive from Exception. And >catching the above three in any circumstance other than when >explicitly mentioned and when wanting to catch every exception is >probably wrong. So moving them will probably not cause many programs >to malfunction. In which case, maybe we should just implement Nick's full proposal, since the only thing that it would break is code that uses "except Exception:" to catch SystemExit or StopIteration. _______________________________________________ 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