NameError vs AttributeError

Chris Kaynor ckaynor at
Tue Jul 31 22:49:25 CEST 2012

On Tue, Jul 31, 2012 at 1:21 PM, Terry Reedy <tjreedy at> wrote:

> Another example: KeyError and IndexError are both subscript errors, but
> there is no SubscriptError superclass, even though both work thru the same
> mechanism -- __getitem__.  The reason is that there is no need for one. In
> 'x[y]', x is usually intented to be either a sequence or mapping, but not
> possibly both. In the rare cases when one wants to catch both errors, one
> can easily enough. To continue the example above, popping an empty list and
> empty set produce IndexError and KeyError respectively:

>   try:
>     while True:
>       process(pop())
>   except (KeyError, IndexError):
>     pass  # empty collection means we are done

There is a base type for KeyError and IndexError: LookupError.

> --
> Terry Jan Reedy
> --
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Python-list mailing list