import sys | |
class _ExitHooks(object): | |
def __init__(self): | |
self.exit_code = None | |
self.exception = None | |
def hook(self): | |
self._orig_exit = sys.exit | |
sys.exit = self.exit | |
self._orig_excepthook = sys.excepthook | |
sys.excepthook = self.exc_handler | |
def exit(self, code=0): | |
self.exit_code = code | |
self._orig_exit(code) | |
def exc_handler(self, exc_type, exc, *args): | |
self.exception = exc | |
sys.excepthook(exc_type, exc, *args) | |
hooks = _ExitHooks() | |
hooks.hook() |