diff options
author | Andrew Hoos <andrewjhoos@gmail.com> | 2016-11-29 17:52:50 -0800 |
---|---|---|
committer | Andrew Hoos <andrewjhoos@gmail.com> | 2016-11-29 17:52:50 -0800 |
commit | b02f118d6f1e43113f6ea4a7d0ad750ff5cf7edb (patch) | |
tree | 80b3a8fe04b6883d4b7b2b619b1caafb7557664a /coverage/execfile.py | |
parent | 27a52632dfb7cddc24506862383c406d31362beb (diff) | |
download | python-coveragepy-b02f118d6f1e43113f6ea4a7d0ad750ff5cf7edb.tar.gz |
Update code to better handle calling sys.excepthook when it throws
Diffstat (limited to 'coverage/execfile.py')
-rw-r--r-- | coverage/execfile.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/coverage/execfile.py b/coverage/execfile.py index 8ff3877..d1aa252 100644 --- a/coverage/execfile.py +++ b/coverage/execfile.py @@ -6,6 +6,7 @@ import marshal import os import sys +import traceback import types from coverage.backward import BUILTINS @@ -195,7 +196,13 @@ def run_python_file(filename, args, package=None, modulename=None, path0=None): # call a custom user excepthook if it is provided if sys.excepthook is not sys.__excepthook__: - sys.excepthook(typ, err, tb.tb_next) + try: + sys.excepthook(typ, err, tb.tb_next) + except SystemExit: + raise + except: + typ, err, tb = sys.exc_info() + traceback.print_exception(typ, err, tb.tb_next) raise ExceptionDuringRun(typ, err, tb.tb_next) finally: |