try except question - serious foo bar question, and pulling my hair out :-)
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Tue Feb 24 09:52:14 EST 2009
En Tue, 24 Feb 2009 11:09:44 -0200, Laszlo Nagy <gandalf at shopzeus.com>
escribió:
>> It seems impossible to me. The while loop should only exit if
>> stop_requested becomes set, OR if an exception is raised. However, all
>> exceptions are cought and logged. But there are no exceptions logged.
>> And stop_requested is NOT SET. (see the last line in the log).
>>
>> What is happening here?
>
> It was a bad assumption. Not all exceptions are subclasses of
> "Exception". In this case, an inner call raised SystemExit(0).
Glad to see you finally found what was happening!
> So be aware. Don't think that this will catch all exceptions:
>
> try:
> ???
> except Exception,e:
> do_with(e)
>
>
> Use this instead:
>
> import sys
> try:
> ???
> except:
> e = sys.exc_value
> do_with(e)
Only at the outermost block on your code, if ever... The fact that some
exceptions don't inherit from Exception is on purpose -- usually you
*dont* want to catch (and swallow) SystemExit (nor KeyboardInterrupt, and
a few more I think)
--
Gabriel Genellina
More information about the Python-list
mailing list