python exception message capturing

python exception message capturing

You have to define which type of exception you want to catch. So write except Exception, e: instead of except, e: for a general exception (that will be logged anyway).

Other possibility is to write your whole try/except code this way:

try:
    with open(filepath,rb) as f:
        con.storbinary(STOR + filepath, f)
    logger.info(File successfully uploaded to + FTPADDR)
except Exception, e: # work on python 2.x
    logger.error(Failed to upload to ftp: + str(e))

in Python 3.x and modern versions of Python 2.x use except Exception as e instead of except Exception, e:

try:
    with open(filepath,rb) as f:
        con.storbinary(STOR + filepath, f)
    logger.info(File successfully uploaded to + FTPADDR)
except Exception as e: # work on python 3.x
    logger.error(Failed to upload to ftp: + str(e))

The syntax is no longer supported in python 3. Use the following instead.

try:
    do_something()
except BaseException as e:
    logger.error(Failed to do something:  + str(e))

python exception message capturing

If you want the error class, error message, and stack trace, use sys.exc_info().

Minimal working code with some formatting:

import sys
import traceback

try:
    ans = 1/0
except BaseException as ex:
    # 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()

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

    print(Exception type : %s  % ex_type.__name__)
    print(Exception message : %s %ex_value)
    print(Stack trace : %s %stack_trace)

Which gives the following output:

Exception type : ZeroDivisionError
Exception message : division by zero
Stack trace : [File : .\test.py , Line : 5, Func.Name : <module>, Message : ans = 1/0]

The function sys.exc_info() gives you details about the most recent exception. It returns a tuple of (type, value, traceback).

traceback is an instance of traceback object. You can format the trace with the methods provided. More can be found in the traceback documentation .

Leave a Reply

Your email address will not be published. Required fields are marked *