2.2 features

Paul Prescod paulp at ActiveState.com
Fri Aug 3 14:51:33 EDT 2001


Guido van Rossum wrote:
> 
> Paul Prescod <paulp at ActiveState.com> writes:
> 
> > try:
> >   foo()
> > except x in class ZeroDivisionError:
> >   bar()
> 
> That would be backwards incompatible.   The expression in the except
> clause is not an arbitrary Boolean -- it's an exception or a tuple of
> exceptions.  

I don't see it as an arbitrary boolean. I see it as a very fixed
structure:

'except' varname 'in' 'class' ExceptionName[, ExceptionName]* ':'

For example, this would be illegal:

   except x not in class ZeroDivisionError:

Yes "x in class y" would be a boolean expression elsewhere but that's
just like the current exception syntax which looks like a tuple
constructor but isn't really. Either we try to reuse syntax or we don't.
If we chose NOT to reuse syntax then we could say:

try:
  foo()
except x of type ZeroDevisionError:
  bar()

i.e. we have complete control over what follows the "except" clause. We
could even introduce contextual keywords. If you tell me which strategy
you prefer, I can write a PEP.
-- 
Take a recipe. Leave a recipe.  
Python Cookbook!  http://www.ActiveState.com/pythoncookbook




More information about the Python-list mailing list