py/vm: Don't add traceback info for exceptions that are re-raised.
With this patch exceptions that are re-raised have improved tracebacks (less confusing, match CPython), and it makes re-raise slightly more efficient (in time and RAM) because they no longer need to add a traceback. Also general VM performance is not measurably affected. Partially fixes issue #2928.
This commit is contained in:
@@ -57,6 +57,18 @@ except Exception as e:
|
||||
print('caught')
|
||||
print_exc(e)
|
||||
|
||||
# Test that re-raising an exception doesn't add traceback info
|
||||
try:
|
||||
try:
|
||||
f()
|
||||
except Exception as e:
|
||||
print('reraise')
|
||||
print_exc(e)
|
||||
raise
|
||||
except Exception as e:
|
||||
print('caught')
|
||||
print_exc(e)
|
||||
|
||||
# Here we have a function with lots of bytecode generated for a single source-line, and
|
||||
# there is an error right at the end of the bytecode. It should report the correct line.
|
||||
def f():
|
||||
|
||||
Reference in New Issue
Block a user