def trace(context=1):
"""Return a list of records for the stack below the current exception."""
- return getinnerframes(sys.exc_info()[2], context)
+ exc = sys.exception()
+ tb = None if exc is None else exc.__traceback__
+ return getinnerframes(tb, context)
# ------------------------------------------------ static version of getattr
# --
def print_exc(limit=None, file=None, chain=True):
- """Shorthand for 'print_exception(*sys.exc_info(), limit, file, chain)'."""
- print_exception(*sys.exc_info(), limit=limit, file=file, chain=chain)
+ """Shorthand for 'print_exception(sys.exception(), limit, file, chain)'."""
+ print_exception(sys.exception(), limit=limit, file=file, chain=chain)
def format_exc(limit=None, chain=True):
"""Like print_exc() but return a string."""
- return "".join(format_exception(*sys.exc_info(), limit=limit, chain=chain))
+ return "".join(format_exception(sys.exception(), limit=limit, chain=chain))
def print_last(limit=None, file=None, chain=True):
"""This is a shorthand for 'print_exception(sys.last_exc, limit, file, chain)'."""