How can you programmatically inspect the stack trace of an exception in Python?

前端 未结 5 1383
一个人的身影
一个人的身影 2021-02-02 12:19

When an exception occurs in Python, can you inspect the stack? Can you determine its depth? I\'ve looked at the traceback module, but I can\'t figure out how to use it.

<
5条回答
  •  失恋的感觉
    2021-02-02 13:01

    I like the traceback module.

    You can get a traceback object using sys.exc_info(). Then you can use that object to get a list preprocessed list of traceback entries using traceback.extract_tb(). Then you can get a readable list using traceback.format_list() as follows:

    import sys
    import traceback, inspect
    
    try:
        f = open("nonExistant file",'r')
    except:
        (exc_type, exc_value, exc_traceback) = sys.exc_info()
        #print exception type
        print exc_type
        tb_list = traceback.extract_tb(sys.exc_info()[2])
        tb_list = traceback.format_list(tb_list)
        for elt in tb_list:
            print elt
            #Do any processing you need here.
    

    See the sys Module: http://docs.python.org/library/sys.html

    and the traceback Module: http://docs.python.org/library/traceback.html

提交回复
热议问题