those darn exceptions

Gregory Ewing greg.ewing at canterbury.ac.nz
Fri Jun 24 03:50:34 EDT 2011


Chris Torek wrote:
> I can then check the now-valid
> pid via os.kill().  However, it turns out that one form of "trash"
> is a pid that does not fit within sys.maxint.  This was a surprise
> that turned up only in testing, and even then, only because I
> happened to try a ridiculously large value as one of my test cases.

It appears that this situation is not unique to os.kill(),
for example,

 >>> import os
 >>> os.read(999999999999999999999999, 42)
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
OverflowError: Python int too large to convert to C long

In fact I'd expect it to happen any time you pass a
very large int to something that's wrapping a C function.

You can't really blame the wrappers for this -- it's not
reasonable to expect all of them to catch out-of-range ints
and do whatever the underlying function would have done if
it were given an invalid argument.

I think the lesson to take from this is that you should
probably add OverflowError to the list of things to catch
whenever you're calling a function with input that's not
fully validated.

-- 
Greg



More information about the Python-list mailing list