Steven D'Aprano wrote: > I have script with an exception handler that takes care of writing the > traceback to syslog, and I set it as the global exceptionhook: > > sys.excepthook = my_error_handler > > > When my script raises, my_error_handler is called, as expected, and the > process exits with status 1. > > How can I change the exit status to another value, but only for exceptions > handled by my_error_handler?
Why not just put try: ... except: ... around the main function? That said, it looks like you can exit() from the errorhandler: $ cat bend_exit.py import sys def my_error_handler(etype, exception, traceback): print("unhandled", exception) sys.exit(2) sys.excepthook = my_error_handler 1/int(sys.argv[1]) print("bye") $ python3 bend_exit.py 0; echo $? unhandled division by zero 2 $ python3 bend_exit.py 1; echo $? bye 0 If "bad things" can happen I don't know... -- https://mail.python.org/mailman/listinfo/python-list