[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