jmquintana79
2/5/2018 - 2:54 AM

exception handler with extra information

Handle scripting errors displaying extra information.

try:
    raise NotImplementedError("No error")
except Exception as e:
    # catch error
    import sys
    exc_type, exc_value, exc_traceback = sys.exc_info()
    traceback_details = {
                         'filename': exc_traceback.tb_frame.f_code.co_filename,
                         'lineno'  : exc_traceback.tb_lineno,
                         'name'    : exc_traceback.tb_frame.f_code.co_name,
                         'type'    : exc_type.__name__,
                        }
    # clean
    del(exc_type, exc_value, exc_traceback)
    # display error message
    err_msg = '''
    ERROR:
    - filename: %s
    - line: %s
    - type: %s
    - error: %s
    '''%(traceback_details['filename'],traceback_details['lineno'],traceback_details['type'],str(e))
    print(err_msg)
try:
  #statement to be validated
except BaseException as e:
    import sys
    import traceback

    # Get current system exception
    ex_type, ex_value, ex_traceback = sys.exc_info()

    # Extract unformatter stack traces as tuples
    trace_back = traceback.extract_tb(ex_traceback)

    # Format stacktrace
    stack_trace = list()

    # display
    print("Exception type : %s " % ex_type.__name__)
    print("Exception message : %s" %ex_value)
    print("Stack trace:")

    for trace in trace_back:
        print("File : %s , Line : %d, Func.Name : %s, Message : %s" % (trace[0], trace[1], trace[2], trace[3]))
        stack_trace.append("File : %s , Line : %d, Func.Name : %s, Message : %s" % (trace[0], trace[1], trace[2], trace[3]))