[Python-Dev] EINVAL
Antoine Pitrou
solipsis at pitrou.net
Thu Jul 22 12:33:02 CEST 2010
On Thu, 22 Jul 2010 17:50:00 +0900
"Stephen J. Turnbull" <stephen at xemacs.org> wrote:
> Greg Ewing writes:
> > Glyph Lefkowitz wrote:
> >
> > > The selection of RuntimeError in this particular case seems
> > > somewhat random and ad-hoc,
>
> Well, I guess we'd have to catch the person who wrote the code and
> ask.
>
> > Maybe this is something that could be considered in the
> > exception hierarchy revamp proposal that was posted recently?
>
> I think that's Antoine's PEP 3151. Interestingly, he doesn't mention
> EINVAL at all.
>
> http://www.python.org/dev/peps/pep-3151/
That's right. It is based on a survey of existing exception-catching
code in the stdlib. There's only one match in the whole Lib/ subtree:
$ grep -r EINVAL Lib/
Lib/plat-sunos5/STROPTS.py:968:EINVAL = 22
I guess EINVAL would most often indicate a programming error, which is
why it doesn't get handled specifically in except clauses. Semantically,
EINVAL seems close to ValueError. If I search inside the man pages
here, I get excerpts such as:
- wait(2):
EINVAL The options argument was invalid.
- gettimeofday(2):
EINVAL Timezone (or something else) is invalid.
- socket(2):
EINVAL Unknown protocol, or protocol family not available.
EINVAL Invalid flags in type.
- rename(2):
EINVAL The new pathname contained a path prefix of the old,
or, more generally, an attempt was made to make a directory a
subdirectory of itself.
Regards
Antoine.
More information about the Python-Dev
mailing list