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


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...


  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