Python program termination and exception catching

Jerry Hill malaclypse2 at gmail.com
Mon Apr 11 01:49:45 CEST 2011


On Sun, Apr 10, 2011 at 3:25 PM, Jason Swails <jason.swails at gmail.com> wrote:
>
> Hello everyone,
>
> This may sound like a bit of a strange desire, but I want to change the way in which a python program quits if an exception is not caught.  The program has many different classes of exceptions (for clarity purposes), and they're raised whenever something goes wrong.  Most I want to be fatal, but others I'd want to catch and deal with.
>
> Is there any way to control Python's default exit strategy when it hits an uncaught exception (for instance, call another function that exits "differently")?

When an exception is raised and uncaught, the interpreter calls
sys.excepthook. You can replace sys.excepthook with your own function.
 See http://docs.python.org/library/sys.html#sys.excepthook

If your program is threaded, you may need to look at this bug:
http://bugs.python.org/issue1230540.  It describes a problem with
replacing sys.excepthook when using the threading module, along with
some workarounds.

There's a simple example of replacing excepthook here:
http://code.activestate.com/recipes/65287/

--
Jerry



More information about the Python-list mailing list