Setting exit code in Python when an exception is raised
Asked Answered
B

1

44
$ cat e.py
raise Exception
$ python e.py
Traceback (most recent call last):
  File "e.py", line 1, in <module>
    raise Exception
Exception
$ echo $?
1

I would like to change this exit code from 1 to 3 while still dumping the full stack trace. What's the best way to do this?

Batho answered 16/7, 2011 at 20:43 Comment(1)
Looks like 1 the default return code value python uses upon an unhandled exception bubbling all the way to the top? I wonder if it varies by exception type.Gass
D
60

Take a look at the traceback module. You could do the following:

import sys, traceback

try:
  raise Exception()
except:
  traceback.print_exc()
  sys.exit(3)

This will write traceback to standard error and exit with code 3.

Diphyodont answered 16/7, 2011 at 20:52 Comment(1)
But ain't there a way to install such a handler without having to open a try/except clause? I'd prefer to just call something once, maybe by importing a specific module, and then each raising of ExceptionWhichCausesExitCode3() should exit the program with exit code 3.Asmara

© 2022 - 2024 — McMap. All rights reserved.