def test_hidden_with_tb(): def not_hidden(): 1/0 try: not_hidden() except ZeroDivisionError as e: assert sys.exc_info() == (None, None, None) tb = __pypy__.get_hidden_tb() assert tb.tb_frame.f_code.co_name == 'not_hidden' return True else: return False
def test_hidden_with_tb(): def not_hidden(): 1/0 try: not_hidden() except ZeroDivisionError as e: assert sys.exc_info() == (None, None, None) tb = __pypy__.get_hidden_tb() assert tb.tb_frame.f_code.co_name == 'not_hidden' result[0] = True raise else: return False
def display_exception(e): etype, evalue, etraceback = type(e), e, get_hidden_tb() try: # extra debugging info in case the code below goes very wrong if DEBUG and hasattr(sys, 'stderr'): s = getattr(etype, '__name__', repr(etype)) print >> sys.stderr, "debug: exception-type: ", s print >> sys.stderr, "debug: exception-value:", str(evalue) tbentry = etraceback if tbentry: while tbentry.tb_next: tbentry = tbentry.tb_next lineno = tbentry.tb_lineno filename = tbentry.tb_frame.f_code.co_filename print >> sys.stderr, "debug: exception-tb: %s:%d" % ( filename, lineno) # set the sys.last_xxx attributes sys.last_type = etype sys.last_value = evalue sys.last_traceback = etraceback # call sys.excepthook hook = getattr(sys, 'excepthook', originalexcepthook) hook(etype, evalue, etraceback) return # done except BaseException as e: try: stderr = sys.stderr print >> stderr, 'Error calling sys.excepthook:' originalexcepthook(type(e), e, e.__traceback__) print >> stderr print >> stderr, 'Original exception was:' except: pass # too bad # we only get here if sys.excepthook didn't do its job originalexcepthook(etype, evalue, etraceback)