Which exception to use?

Michael Hudson mwh at python.net
Thu Jan 30 12:59:55 CET 2003


Peter Hansen <peter at engcorp.com> writes:

> Michael Hudson wrote:
> > 
> > Chad Netzer <cnetzer at mail.arc.nasa.gov> writes:
> > 
> > > I do things like this for some library functions that I create (I
> > > welcome discussion about whether it is a good approach)
> > >
> > > class ArgumentError( Exception ):
> > >     pass
> > 
> > This *is* a good approach (IMHO), but you should consider deriving
> > your exceptions from StandardError instead (I rarely remember to do
> > this, either).
> 
> Why should you do this?

I think I'm mixed up.

> I found the following quote when I searched for "python standarderror",
> from http://web.pydoc.org/1.5.2/exceptions.html#StandardError :
> 
>   "If you define your own class based exceptions, they should be 
>    derived from Exception."
> 
> All of *Python's* exceptions, except SystemExit, are derived from
> StandardError, but the description of StandardError says only 
> "Base class for all standard Python exceptions.".
> 
> Since we're not talking about defining *standard* exceptions, 
> shouldn't we follow the advice in that page?

My idea was that instead of writing

except:

you should mostly write

except StandardError:

so you don't catch SystemExits by mistake.  But it looks like I've
been making things up again, so feel free to ignore my post...

Cheers,
M.

-- 
  Arrrrgh, the braindamage!  It's not unlike the massively
  non-brilliant decision to use the period in abbreviations
  as well as a sentence terminator.  Had these people no
  imagination at _all_?                 -- Erik Naggum, comp.lang.lisp




More information about the Python-list mailing list