pythonobjectformattraceback

How to format traceback objects in Python


I have a traceback object that I want to show in the nice format I get when calling traceback.format_exc().

Is there a builtin function for this? Or a few lines of code?


Solution

  • format_exc() is really just

    etype, value, tb = sys.exc_info()
    return ''.join(format_exception(etype, value, tb, limit))
    

    So if you have the exception type, value, and traceback ready, it should be easy. If you have just the exception, notice that format_exception() is essentially:

    a_list = ['Traceback (most recent call last):\n']
    a_list = a_list + format_tb(tb, limit)
    

    where limit defaults to None.


    Example:

    To further aid in clarifying a (simple) application of format_exc():

    import traceback
    
    try:
        # Some code
    except Exception:
        print('\nThe following error occurred:\n',
              traceback.format_exc(),
              'Processing aborted.\n',
              sep='\n')
        # sys.exit(1)