those darn exceptions
Chris Torek
nospam at torek.net
Thu Jun 23 14:33:53 EDT 2011
In article <96gb36Fc65U1 at mid.individual.net>,
Gregory Ewing <greg.ewing at canterbury.ac.nz> wrote:
>Chris Torek wrote:
>
>> Oops! It turns out that os.kill() can raise OverflowError (at
>> least in this version of Python, not sure what Python 3.x does).
>
>Seems to me that if this happens it indicates a bug in
>your code. It only makes sense to pass kill() something
>that you know to be the pid of an existing process,
>presumably one returned by some other system call.
>
>So if kill() raises OverflowError, you *don't* want
>to catch and ignore it. You want to find out about it,
>just as much as you want to find out about a TypeError,
>so you can track down the cause and fix it.
A bunch of you are missing the point here, perhaps because my
original example was "not the best", as it were. (I wrote it
on the fly; the actual code was elsewhere at the time.)
I do, indeed, want to "find out about it". But in this case
what I want to find out is "the number I thought was a pid,
was not a pid", and I want to find that out early and catch
the OverflowError() in the function in question.
(The two applications here are a daemon and a daemon-status-checking
program. The daemon needs to see if another instance of itself is
already running [*]. The status-checking program needs to see if
the daemon is running [*]. Both open a pid file and read the contents.
The contents might be stale or trash. I can check for trash because
int(some_string) raises ValueError. 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 *should*, for some value of "should" :-) , have turned up much
earlier, such as when running pylint.)
([*] The test does not have to be perfect, but it sure would be
nice if it did not result in a Python stack dump. :-) )
--
In-Real-Life: Chris Torek, Wind River Systems
Intel require I note that my opinions are not those of WRS or Intel
Salt Lake City, UT, USA (40°39.22'N, 111°50.29'W) +1 801 277 2603
email: gmail (figure it out) http://web.torek.net/torek/index.html
More information about the Python-list
mailing list