
On Thu, 22 Jul 2010 17:50:00 +0900 "Stephen J. Turnbull" <stephen@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.
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.