diff options
author | Armin Rigo <arigo@tunes.org> | 2016-11-08 10:58:00 +0100 |
---|---|---|
committer | Armin Rigo <arigo@tunes.org> | 2016-11-08 10:58:00 +0100 |
commit | 5e8f55dd9d7d04002d6105a46f5668a90284d500 (patch) | |
tree | 3e205ce51f20449f7af3e637fb730a9bd1bb2e85 /pypy/interpreter/pyframe.py | |
parent | Fix docstring (diff) | |
download | pypy-5e8f55dd9d7d04002d6105a46f5668a90284d500.tar.gz pypy-5e8f55dd9d7d04002d6105a46f5668a90284d500.tar.bz2 pypy-5e8f55dd9d7d04002d6105a46f5668a90284d500.zip |
One more try at tweaking this code. Need to turn the RPython exception
into SystemError in gateway.py too, so that it can be caught and
processed in the topmost frame (code like try: ... except SystemError:
... would miss it).
Diffstat (limited to 'pypy/interpreter/pyframe.py')
-rw-r--r-- | pypy/interpreter/pyframe.py | 26 |
1 files changed, 3 insertions, 23 deletions
diff --git a/pypy/interpreter/pyframe.py b/pypy/interpreter/pyframe.py index 8b2bd555f9..b143d09226 100644 --- a/pypy/interpreter/pyframe.py +++ b/pypy/interpreter/pyframe.py @@ -889,30 +889,10 @@ class PyFrame(W_Root): frame = frame.f_backref() return None - def _convert_unexpected_exception_extra(self, e): - "NOT_RPYTHON" - if e.__class__.__name__ in ( - 'Skipped', # list of exception class names that are ok - ): # to get during ==untranslated tests== only - raise - # include the RPython-level traceback - exc = sys.exc_info() - import traceback, cStringIO - f = cStringIO.StringIO() - print >> f, "\nTraceback (interpreter-level):" - traceback.print_tb(exc[2], file=f) - return f.getvalue() - def _convert_unexpected_exception(self, e): - if we_are_translated(): - from rpython.rlib.debug import debug_print_traceback - debug_print_traceback() - extra = '; internal traceback(s) were dumped to stderr' - else: - extra = self._convert_unexpected_exception_extra(e) - operr = OperationError(self.space.w_SystemError, self.space.wrap( - "unexpected internal exception (please report a bug): %r%s" % - (e, extra))) + from pypy.interpreter import error + + operr = error.get_converted_unexpected_exception(self.space, e) pytraceback.record_application_traceback( self.space, operr, self, self.last_instr) raise operr |