Guido van Rossum <[EMAIL PROTECTED]> writes: > So here's a radical proposal (hear the scratching of the finglernail > on the blackboard? :-). > > Start with Brett's latest proposal. Goal: keep bare "except:" but > change it to catch only the part of the hierarchy rooted at > StandardError. > > - Call the root of the hierarchy Raisable. > - Rename CriticalException to CriticalError > (this should happen anyway). > - Rename ControlFlowException to ControlFlowRaisable > (anything except Error or Exception). > - Rename StandardError to Exception. > - 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.
In the above you need to ensure that all raised exceptions inherit from Raisable, because sometimes you really do want to catch almost anything (e.g. code.py). Has anyone thought about the C side of this? There are a few slightly-careless calls to PyErr_Clear() in the codebase, and they can cause just as much (more!) heartache as bare except: clauses. I'll note in passing that I'm not sure that any reorganization of the exception hierachy will make this kind of catching-too-much bug go away. The issue is just thorny, and each case is different. I'm also still not convinced that the backwards compatibility breaking Python 3.0 will ever actually happen, but I guess that's a different consideration... Cheers, mwh -- Haha! You had a *really* weak argument! <wink> -- Moshe Zadka, comp.lang.python _______________________________________________ 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