On 8/3/05, Brett Cannon <[EMAIL PROTECTED]> wrote: > On 8/3/05, Guido van Rossum <[EMAIL PROTECTED]> wrote: > > So here's a radical proposal (hear the scratching of the finglernail > > on the blackboard? :-). > > > > Start with Brett's latest proposal. > > Including renaming (I want to know if you support the renamings at > all, if I should make them more of an idea to be considered when we > get closer to Python 3.0, or just drop them) and the new exceptions?
Most of the renamings sound fine to me. > > Goal: keep bare "except:" but > > change it to catch only the part of the hierarchy rooted at > > StandardError. > > Why the change of heart? Backwards-compatibility? Way to keep > newbies from choosing Raisable or such as what to catch? The proposal accepts that there's a need to catch "all errors that are reasonable to catch": that's why it separates StandardError from the root exception class. So now we're going to recommend that everyone who was using bare 'except:' write 'except StandardError:' instead. So why not have a default? Because of EIBTI? Seems a weak argument; we have defaults for lots of things. > > - Call the root of the hierarchy Raisable. > > Fine by me. Will change it before I check in the PEP tonight. > > > - Rename CriticalException to CriticalError > > (this should happen anyway). > > I thought I changed that in the latest version. I will change it. I may have missed the change. > > - Rename ControlFlowException to ControlFlowRaisable > > (anything except Error or Exception). > > No objection from me. I actually find it ugly; but it's not an error and it would be weird if there was an xxxException that didn't derive from Exception. > > - Rename StandardError to Exception. > > So just ditch StandardError, which is fine by me, or go with Nick's v2 > proposal and have all pre-existing exceptions inherit from it? I > assume the latter since you said you wanted bare 'except' clauses to > catch StandardError. What do you think? Of course the critical and control flow ones should *not* inherit from it. [...brain hums...] OK, I'm changing my mind again about the names again. Exception as the root and StandardError can stay; the only new proposal would then be to make bare 'except:' call StandardError. > > - Make Warning a subclass of Exception. > > > > I'd want the latter point even if the rest of this idea is rejected; > > when a Warning is raised (as opposed to just printing a message or > > being suppressed altogether) it should be treated just like any other > > normal exception, i.e. StandardError. > > Since warnings only become raised if the warnings filter lists it as > an error I can see how this is a reasonable suggestion. And if bare > 'except' clauses catch StandardError and not Exception they will still > propagate to the top unless people explicitly catch Exception or lower > which seems fair. Unclear what you mean; I want bare except; to catch Warnings! IOW I want Warning to inherit from whatever the thing is that bare except: catches (if we keep it) and that is the start of all the "normal" exceptions excluding critical and control flow exceptions. -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ 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